Coverage Report

Created: 2022-12-11 01:05

/rust/registry/src/github.com-1ecc6299db9ec823/wasmtime-1.0.2/src/func.rs
Line
Count
Source (jump to first uncovered line)
1
use crate::store::{StoreData, StoreOpaque, Stored};
2
use crate::{
3
    AsContext, AsContextMut, CallHook, Engine, Extern, FuncType, Instance, StoreContext,
4
    StoreContextMut, Trap, Val, ValRaw, ValType,
5
};
6
use anyhow::{bail, Context as _, Result};
7
use std::future::Future;
8
use std::mem;
9
use std::panic::{self, AssertUnwindSafe};
10
use std::pin::Pin;
11
use std::ptr::NonNull;
12
use std::sync::Arc;
13
use wasmtime_runtime::{
14
    raise_user_trap, ExportFunction, InstanceHandle, VMCallerCheckedAnyfunc, VMContext,
15
    VMFunctionBody, VMFunctionImport, VMHostFuncContext, VMOpaqueContext, VMSharedSignatureIndex,
16
    VMTrampoline,
17
};
18
19
/// A WebAssembly function which can be called.
20
///
21
/// This type can represent either an exported function from a WebAssembly
22
/// module or a host-defined function which can be used to satisfy an import of
23
/// a module. [`Func`] and can be used to both instantiate an [`Instance`] as
24
/// well as be extracted from an [`Instance`].
25
///
26
/// [`Instance`]: crate::Instance
27
///
28
/// A [`Func`] "belongs" to the store that it was originally created within.
29
/// Operations on a [`Func`] only work with the store it belongs to, and if
30
/// another store is passed in by accident then methods will panic.
31
///
32
/// # `Func` and `async`
33
///
34
/// Functions from the perspective of WebAssembly are always synchronous. You
35
/// might have an `async` function in Rust, however, which you'd like to make
36
/// available from WebAssembly. Wasmtime supports asynchronously calling
37
/// WebAssembly through native stack switching. You can get some more
38
/// information about [asynchronous configs](crate::Config::async_support), but
39
/// from the perspective of `Func` it's important to know that whether or not
40
/// your [`Store`](crate::Store) is asynchronous will dictate whether you call
41
/// functions through [`Func::call`] or [`Func::call_async`] (or the typed
42
/// wrappers such as [`TypedFunc::call`] vs [`TypedFunc::call_async`]).
43
///
44
/// # To `Func::call` or to `Func::typed().call()`
45
///
46
/// There's a 2x2 matrix of methods to call [`Func`]. Invocations can either be
47
/// asynchronous or synchronous. They can also be statically typed or not.
48
/// Whether or not an invocation is asynchronous is indicated via the method
49
/// being `async` and [`call_async`](Func::call_async) being the entry point.
50
/// Otherwise for statically typed or not your options are:
51
///
52
/// * Dynamically typed - if you don't statically know the signature of the
53
///   function that you're calling you'll be using [`Func::call`] or
54
///   [`Func::call_async`]. These functions take a variable-length slice of
55
///   "boxed" arguments in their [`Val`] representation. Additionally the
56
///   results are returned as an owned slice of [`Val`]. These methods are not
57
///   optimized due to the dynamic type checks that must occur, in addition to
58
///   some dynamic allocations for where to put all the arguments. While this
59
///   allows you to call all possible wasm function signatures, if you're
60
///   looking for a speedier alternative you can also use...
61
///
62
/// * Statically typed - if you statically know the type signature of the wasm
63
///   function you're calling, then you'll want to use the [`Func::typed`]
64
///   method to acquire an instance of [`TypedFunc`]. This structure is static proof
65
///   that the underlying wasm function has the ascripted type, and type
66
///   validation is only done once up-front. The [`TypedFunc::call`] and
67
///   [`TypedFunc::call_async`] methods are much more efficient than [`Func::call`]
68
///   and [`Func::call_async`] because the type signature is statically known.
69
///   This eschews runtime checks as much as possible to get into wasm as fast
70
///   as possible.
71
///
72
/// # Examples
73
///
74
/// One way to get a `Func` is from an [`Instance`] after you've instantiated
75
/// it:
76
///
77
/// ```
78
/// # use wasmtime::*;
79
/// # fn main() -> anyhow::Result<()> {
80
/// let engine = Engine::default();
81
/// let module = Module::new(&engine, r#"(module (func (export "foo")))"#)?;
82
/// let mut store = Store::new(&engine, ());
83
/// let instance = Instance::new(&mut store, &module, &[])?;
84
/// let foo = instance.get_func(&mut store, "foo").expect("export wasn't a function");
85
///
86
/// // Work with `foo` as a `Func` at this point, such as calling it
87
/// // dynamically...
88
/// match foo.call(&mut store, &[], &mut []) {
89
///     Ok(()) => { /* ... */ }
90
///     Err(trap) => {
91
///         panic!("execution of `foo` resulted in a wasm trap: {}", trap);
92
///     }
93
/// }
94
/// foo.call(&mut store, &[], &mut [])?;
95
///
96
/// // ... or we can make a static assertion about its signature and call it.
97
/// // Our first call here can fail if the signatures don't match, and then the
98
/// // second call can fail if the function traps (like the `match` above).
99
/// let foo = foo.typed::<(), (), _>(&store)?;
100
/// foo.call(&mut store, ())?;
101
/// # Ok(())
102
/// # }
103
/// ```
104
///
105
/// You can also use the [`wrap` function](Func::wrap) to create a
106
/// `Func`
107
///
108
/// ```
109
/// # use wasmtime::*;
110
/// # fn main() -> anyhow::Result<()> {
111
/// let mut store = Store::<()>::default();
112
///
113
/// // Create a custom `Func` which can execute arbitrary code inside of the
114
/// // closure.
115
/// let add = Func::wrap(&mut store, |a: i32, b: i32| -> i32 { a + b });
116
///
117
/// // Next we can hook that up to a wasm module which uses it.
118
/// let module = Module::new(
119
///     store.engine(),
120
///     r#"
121
///         (module
122
///             (import "" "" (func $add (param i32 i32) (result i32)))
123
///             (func (export "call_add_twice") (result i32)
124
///                 i32.const 1
125
///                 i32.const 2
126
///                 call $add
127
///                 i32.const 3
128
///                 i32.const 4
129
///                 call $add
130
///                 i32.add))
131
///     "#,
132
/// )?;
133
/// let instance = Instance::new(&mut store, &module, &[add.into()])?;
134
/// let call_add_twice = instance.get_typed_func::<(), i32, _>(&mut store, "call_add_twice")?;
135
///
136
/// assert_eq!(call_add_twice.call(&mut store, ())?, 10);
137
/// # Ok(())
138
/// # }
139
/// ```
140
///
141
/// Or you could also create an entirely dynamic `Func`!
142
///
143
/// ```
144
/// # use wasmtime::*;
145
/// # fn main() -> anyhow::Result<()> {
146
/// let mut store = Store::<()>::default();
147
///
148
/// // Here we need to define the type signature of our `Double` function and
149
/// // then wrap it up in a `Func`
150
/// let double_type = wasmtime::FuncType::new(
151
///     [wasmtime::ValType::I32].iter().cloned(),
152
///     [wasmtime::ValType::I32].iter().cloned(),
153
/// );
154
/// let double = Func::new(&mut store, double_type, |_, params, results| {
155
///     let mut value = params[0].unwrap_i32();
156
///     value *= 2;
157
///     results[0] = value.into();
158
///     Ok(())
159
/// });
160
///
161
/// let module = Module::new(
162
///     store.engine(),
163
///     r#"
164
///         (module
165
///             (import "" "" (func $double (param i32) (result i32)))
166
///             (func $start
167
///                 i32.const 1
168
///                 call $double
169
///                 drop)
170
///             (start $start))
171
///     "#,
172
/// )?;
173
/// let instance = Instance::new(&mut store, &module, &[double.into()])?;
174
/// // .. work with `instance` if necessary
175
/// # Ok(())
176
/// # }
177
/// ```
178
24.2k
#[derive(Copy, Clone, Debug)]
179
#[repr(transparent)] // here for the C API
180
pub struct Func(Stored<FuncData>);
181
182
pub(crate) struct FuncData {
183
    kind: FuncKind,
184
185
    // This is somewhat expensive to load from the `Engine` and in most
186
    // optimized use cases (e.g. `TypedFunc`) it's not actually needed or it's
187
    // only needed rarely. To handle that this is an optionally-contained field
188
    // which is lazily loaded into as part of `Func::call`.
189
    //
190
    // Also note that this is intentionally placed behind a pointer to keep it
191
    // small as `FuncData` instances are often inserted into a `Store`.
192
    ty: Option<Box<FuncType>>,
193
}
194
195
/// The three ways that a function can be created and referenced from within a
196
/// store.
197
enum FuncKind {
198
    /// A function already owned by the store via some other means. This is
199
    /// used, for example, when creating a `Func` from an instance's exported
200
    /// function. The instance's `InstanceHandle` is already owned by the store
201
    /// and we just have some pointers into that which represent how to call the
202
    /// function.
203
    StoreOwned {
204
        trampoline: VMTrampoline,
205
        export: ExportFunction,
206
    },
207
208
    /// A function is shared across possibly other stores, hence the `Arc`. This
209
    /// variant happens when a `Linker`-defined function is instantiated within
210
    /// a `Store` (e.g. via `Linker::get` or similar APIs). The `Arc` here
211
    /// indicates that there's some number of other stores holding this function
212
    /// too, so dropping this may not deallocate the underlying
213
    /// `InstanceHandle`.
214
    SharedHost(Arc<HostFunc>),
215
216
    /// A uniquely-owned host function within a `Store`. This comes about with
217
    /// `Func::new` or similar APIs. The `HostFunc` internally owns the
218
    /// `InstanceHandle` and that will get dropped when this `HostFunc` itself
219
    /// is dropped.
220
    ///
221
    /// Note that this is intentionally placed behind a `Box` to minimize the
222
    /// size of this enum since the most common variant for high-peformance
223
    /// situations is `SharedHost` and `StoreOwned`, so this ideally isn't
224
    /// larger than those two.
225
    Host(Box<HostFunc>),
226
227
    /// A reference to a `HostFunc`, but one that's "rooted" in the `Store`
228
    /// itself.
229
    ///
230
    /// This variant is created when an `InstancePre<T>` is instantiated in to a
231
    /// `Store<T>`. In that situation the `InstancePre<T>` already has a list of
232
    /// host functions that are packaged up in an `Arc`, so the `Arc<[T]>` is
233
    /// cloned once into the `Store` to avoid each individual function requiring
234
    /// an `Arc::clone`.
235
    ///
236
    /// The lifetime management of this type is `unsafe` because
237
    /// `RootedHostFunc` is a small wrapper around `NonNull<HostFunc>`. To be
238
    /// safe this is required that the memory of the host function is pinned
239
    /// elsewhere (e.g. the `Arc` in the `Store`).
240
    RootedHost(RootedHostFunc),
241
}
242
243
macro_rules! for_each_function_signature {
244
    ($mac:ident) => {
245
        $mac!(0);
246
        $mac!(1 A1);
247
        $mac!(2 A1 A2);
248
        $mac!(3 A1 A2 A3);
249
        $mac!(4 A1 A2 A3 A4);
250
        $mac!(5 A1 A2 A3 A4 A5);
251
        $mac!(6 A1 A2 A3 A4 A5 A6);
252
        $mac!(7 A1 A2 A3 A4 A5 A6 A7);
253
        $mac!(8 A1 A2 A3 A4 A5 A6 A7 A8);
254
        $mac!(9 A1 A2 A3 A4 A5 A6 A7 A8 A9);
255
        $mac!(10 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10);
256
        $mac!(11 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11);
257
        $mac!(12 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12);
258
        $mac!(13 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13);
259
        $mac!(14 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14);
260
        $mac!(15 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15);
261
        $mac!(16 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15 A16);
262
    };
263
}
264
265
mod typed;
266
pub use typed::*;
267
268
macro_rules! generate_wrap_async_func {
269
    ($num:tt $($args:ident)*) => (paste::paste!{
270
        /// Same as [`Func::wrap`], except the closure asynchronously produces
271
        /// its result. For more information see the [`Func`] documentation.
272
        ///
273
        /// # Panics
274
        ///
275
        /// This function will panic if called with a non-asynchronous store.
276
        #[allow(non_snake_case)]
277
        #[cfg(feature = "async")]
278
        #[cfg_attr(nightlydoc, doc(cfg(feature = "async")))]
279
        pub fn [<wrap $num _async>]<T, $($args,)* R>(
280
            store: impl AsContextMut<Data = T>,
281
            func: impl for<'a> Fn(Caller<'a, T>, $($args),*) -> Box<dyn Future<Output = R> + Send + 'a> + Send + Sync + 'static,
282
        ) -> Func
283
        where
284
            $($args: WasmTy,)*
285
            R: WasmRet,
286
        {
287
            assert!(store.as_context().async_support(), concat!("cannot use `wrap", $num, "_async` without enabling async support on the config"));
288
            Func::wrap(store, move |mut caller: Caller<'_, T>, $($args: $args),*| {
289
                let async_cx = caller.store.as_context_mut().0.async_cx().expect("Attempt to start async function on dying fiber");
290
                let mut future = Pin::from(func(caller, $($args),*));
291
292
                match unsafe { async_cx.block_on(future.as_mut()) } {
293
                    Ok(ret) => ret.into_fallible(),
294
                    Err(e) => R::fallible_from_trap(e),
295
                }
296
            })
297
        }
298
    })
299
}
300
301
impl Func {
302
    /// Creates a new `Func` with the given arguments, typically to create a
303
    /// host-defined function to pass as an import to a module.
304
    ///
305
    /// * `store` - the store in which to create this [`Func`], which will own
306
    ///   the return value.
307
    ///
308
    /// * `ty` - the signature of this function, used to indicate what the
309
    ///   inputs and outputs are.
310
    ///
311
    /// * `func` - the native code invoked whenever this `Func` will be called.
312
    ///   This closure is provided a [`Caller`] as its first argument to learn
313
    ///   information about the caller, and then it's passed a list of
314
    ///   parameters as a slice along with a mutable slice of where to write
315
    ///   results.
316
    ///
317
    /// Note that the implementation of `func` must adhere to the `ty` signature
318
    /// given, error or traps may occur if it does not respect the `ty`
319
    /// signature. For example if the function type declares that it returns one
320
    /// i32 but the `func` closures does not write anything into the results
321
    /// slice then a trap may be generated.
322
    ///
323
    /// Additionally note that this is quite a dynamic function since signatures
324
    /// are not statically known. For a more performant and ergonomic `Func`
325
    /// it's recommended to use [`Func::wrap`] if you can because with
326
    /// statically known signatures Wasmtime can optimize the implementation
327
    /// much more.
328
    ///
329
    /// For more information about `Send + Sync + 'static` requirements on the
330
    /// `func`, see [`Func::wrap`](#why-send--sync--static).
331
    #[cfg(compiler)]
332
    #[cfg_attr(nightlydoc, doc(cfg(feature = "cranelift")))] // see build.rs
333
0
    pub fn new<T>(
334
0
        store: impl AsContextMut<Data = T>,
335
0
        ty: FuncType,
336
0
        func: impl Fn(Caller<'_, T>, &[Val], &mut [Val]) -> Result<(), Trap> + Send + Sync + 'static,
337
0
    ) -> Self {
338
0
        let ty_clone = ty.clone();
339
0
        unsafe {
340
0
            Func::new_unchecked(store, ty, move |caller, values| {
341
0
                Func::invoke(caller, &ty_clone, values, &func)
342
0
            })
343
0
        }
344
0
    }
345
346
    /// Creates a new [`Func`] with the given arguments, although has fewer
347
    /// runtime checks than [`Func::new`].
348
    ///
349
    /// This function takes a callback of a different signature than
350
    /// [`Func::new`], instead receiving a raw pointer with a list of [`ValRaw`]
351
    /// structures. These values have no type information associated with them
352
    /// so it's up to the caller to provide a function that will correctly
353
    /// interpret the list of values as those coming from the `ty` specified.
354
    ///
355
    /// If you're calling this from Rust it's recommended to either instead use
356
    /// [`Func::new`] or [`Func::wrap`]. The [`Func::wrap`] API, in particular,
357
    /// is both safer and faster than this API.
358
    ///
359
    /// # Unsafety
360
    ///
361
    /// This function is not safe because it's not known at compile time that
362
    /// the `func` provided correctly interprets the argument types provided to
363
    /// it, or that the results it produces will be of the correct type.
364
    #[cfg(compiler)]
365
    #[cfg_attr(nightlydoc, doc(cfg(feature = "cranelift")))] // see build.rs
366
0
    pub unsafe fn new_unchecked<T>(
367
0
        mut store: impl AsContextMut<Data = T>,
368
0
        ty: FuncType,
369
0
        func: impl Fn(Caller<'_, T>, &mut [ValRaw]) -> Result<(), Trap> + Send + Sync + 'static,
370
0
    ) -> Self {
371
0
        let store = store.as_context_mut().0;
372
0
        let host = HostFunc::new_unchecked(store.engine(), ty, func);
373
0
        host.into_func(store)
374
0
    }
375
376
    /// Creates a new host-defined WebAssembly function which, when called,
377
    /// will run the asynchronous computation defined by `func` to completion
378
    /// and then return the result to WebAssembly.
379
    ///
380
    /// This function is the asynchronous analogue of [`Func::new`] and much of
381
    /// that documentation applies to this as well. The key difference is that
382
    /// `func` returns a future instead of simply a `Result`. Note that the
383
    /// returned future can close over any of the arguments, but it cannot close
384
    /// over the state of the closure itself. It's recommended to store any
385
    /// necessary async state in the `T` of the [`Store<T>`](crate::Store) which
386
    /// can be accessed through [`Caller::data`] or [`Caller::data_mut`].
387
    ///
388
    /// For more information on `Send + Sync + 'static`, see
389
    /// [`Func::wrap`](#why-send--sync--static).
390
    ///
391
    /// # Panics
392
    ///
393
    /// This function will panic if `store` is not associated with an [async
394
    /// config](crate::Config::async_support).
395
    ///
396
    /// # Examples
397
    ///
398
    /// ```
399
    /// # use wasmtime::*;
400
    /// # fn main() -> anyhow::Result<()> {
401
    /// // Simulate some application-specific state as well as asynchronous
402
    /// // functions to query that state.
403
    /// struct MyDatabase {
404
    ///     // ...
405
    /// }
406
    ///
407
    /// impl MyDatabase {
408
    ///     async fn get_row_count(&self) -> u32 {
409
    ///         // ...
410
    /// #       100
411
    ///     }
412
    /// }
413
    ///
414
    /// let my_database = MyDatabase {
415
    ///     // ...
416
    /// };
417
    ///
418
    /// // Using `new_async` we can hook up into calling our async
419
    /// // `get_row_count` function.
420
    /// let engine = Engine::new(Config::new().async_support(true))?;
421
    /// let mut store = Store::new(&engine, MyDatabase {
422
    ///     // ...
423
    /// });
424
    /// let get_row_count_type = wasmtime::FuncType::new(
425
    ///     None,
426
    ///     Some(wasmtime::ValType::I32),
427
    /// );
428
    /// let get = Func::new_async(&mut store, get_row_count_type, |caller, _params, results| {
429
    ///     Box::new(async move {
430
    ///         let count = caller.data().get_row_count().await;
431
    ///         results[0] = Val::I32(count as i32);
432
    ///         Ok(())
433
    ///     })
434
    /// });
435
    /// // ...
436
    /// # Ok(())
437
    /// # }
438
    /// ```
439
    #[cfg(all(feature = "async", feature = "cranelift"))]
440
    #[cfg_attr(nightlydoc, doc(cfg(all(feature = "async", feature = "cranelift"))))]
441
    pub fn new_async<T, F>(store: impl AsContextMut<Data = T>, ty: FuncType, func: F) -> Func
442
    where
443
        F: for<'a> Fn(
444
                Caller<'a, T>,
445
                &'a [Val],
446
                &'a mut [Val],
447
            ) -> Box<dyn Future<Output = Result<(), Trap>> + Send + 'a>
448
            + Send
449
            + Sync
450
            + 'static,
451
    {
452
        assert!(
453
            store.as_context().async_support(),
454
            "cannot use `new_async` without enabling async support in the config"
455
        );
456
        Func::new(store, ty, move |mut caller, params, results| {
457
            let async_cx = caller
458
                .store
459
                .as_context_mut()
460
                .0
461
                .async_cx()
462
                .expect("Attempt to spawn new action on dying fiber");
463
            let mut future = Pin::from(func(caller, params, results));
464
            match unsafe { async_cx.block_on(future.as_mut()) } {
465
                Ok(Ok(())) => Ok(()),
466
                Ok(Err(trap)) | Err(trap) => Err(trap),
467
            }
468
        })
469
    }
470
471
0
    pub(crate) unsafe fn from_caller_checked_anyfunc(
472
0
        store: &mut StoreOpaque,
473
0
        raw: *mut VMCallerCheckedAnyfunc,
474
0
    ) -> Option<Func> {
475
0
        let anyfunc = NonNull::new(raw)?;
476
0
        debug_assert!(anyfunc.as_ref().type_index != VMSharedSignatureIndex::default());
477
0
        let export = ExportFunction { anyfunc };
478
0
        Some(Func::from_wasmtime_function(export, store))
479
0
    }
480
481
    /// Creates a new `Func` from the given Rust closure.
482
    ///
483
    /// This function will create a new `Func` which, when called, will
484
    /// execute the given Rust closure. Unlike [`Func::new`] the target
485
    /// function being called is known statically so the type signature can
486
    /// be inferred. Rust types will map to WebAssembly types as follows:
487
    ///
488
    /// | Rust Argument Type  | WebAssembly Type |
489
    /// |---------------------|------------------|
490
    /// | `i32`               | `i32`            |
491
    /// | `u32`               | `i32`            |
492
    /// | `i64`               | `i64`            |
493
    /// | `u64`               | `i64`            |
494
    /// | `f32`               | `f32`            |
495
    /// | `f64`               | `f64`            |
496
    /// | (not supported)     | `v128`           |
497
    /// | `Option<Func>`      | `funcref`        |
498
    /// | `Option<ExternRef>` | `externref`      |
499
    ///
500
    /// Any of the Rust types can be returned from the closure as well, in
501
    /// addition to some extra types
502
    ///
503
    /// | Rust Return Type  | WebAssembly Return Type | Meaning               |
504
    /// |-------------------|-------------------------|-----------------------|
505
    /// | `()`              | nothing                 | no return value       |
506
    /// | `T`               | `T`                     | a single return value |
507
    /// | `(T1, T2, ...)`   | `T1 T2 ...`             | multiple returns      |
508
    ///
509
    /// Note that all return types can also be wrapped in `Result<_, Trap>` to
510
    /// indicate that the host function can generate a trap as well as possibly
511
    /// returning a value.
512
    ///
513
    /// Finally you can also optionally take [`Caller`] as the first argument of
514
    /// your closure. If inserted then you're able to inspect the caller's
515
    /// state, for example the [`Memory`](crate::Memory) it has exported so you
516
    /// can read what pointers point to.
517
    ///
518
    /// Note that when using this API, the intention is to create as thin of a
519
    /// layer as possible for when WebAssembly calls the function provided. With
520
    /// sufficient inlining and optimization the WebAssembly will call straight
521
    /// into `func` provided, with no extra fluff entailed.
522
    ///
523
    /// # Why `Send + Sync + 'static`?
524
    ///
525
    /// All host functions defined in a [`Store`](crate::Store) (including
526
    /// those from [`Func::new`] and other constructors) require that the
527
    /// `func` provided is `Send + Sync + 'static`. Additionally host functions
528
    /// always are `Fn` as opposed to `FnMut` or `FnOnce`. This can at-a-glance
529
    /// feel restrictive since the closure cannot close over as many types as
530
    /// before. The reason for this, though, is to ensure that
531
    /// [`Store<T>`](crate::Store) can implement both the `Send` and `Sync`
532
    /// traits.
533
    ///
534
    /// Fear not, however, because this isn't as restrictive as it seems! Host
535
    /// functions are provided a [`Caller<'_, T>`](crate::Caller) argument which
536
    /// allows access to the host-defined data within the
537
    /// [`Store`](crate::Store). The `T` type is not required to be any of
538
    /// `Send`, `Sync`, or `'static`! This means that you can store whatever
539
    /// you'd like in `T` and have it accessible by all host functions.
540
    /// Additionally mutable access to `T` is allowed through
541
    /// [`Caller::data_mut`].
542
    ///
543
    /// Most host-defined [`Func`] values provide closures that end up not
544
    /// actually closing over any values. These zero-sized types will use the
545
    /// context from [`Caller`] for host-defined information.
546
    ///
547
    /// # Examples
548
    ///
549
    /// First up we can see how simple wasm imports can be implemented, such
550
    /// as a function that adds its two arguments and returns the result.
551
    ///
552
    /// ```
553
    /// # use wasmtime::*;
554
    /// # fn main() -> anyhow::Result<()> {
555
    /// # let mut store = Store::<()>::default();
556
    /// let add = Func::wrap(&mut store, |a: i32, b: i32| a + b);
557
    /// let module = Module::new(
558
    ///     store.engine(),
559
    ///     r#"
560
    ///         (module
561
    ///             (import "" "" (func $add (param i32 i32) (result i32)))
562
    ///             (func (export "foo") (param i32 i32) (result i32)
563
    ///                 local.get 0
564
    ///                 local.get 1
565
    ///                 call $add))
566
    ///     "#,
567
    /// )?;
568
    /// let instance = Instance::new(&mut store, &module, &[add.into()])?;
569
    /// let foo = instance.get_typed_func::<(i32, i32), i32, _>(&mut store, "foo")?;
570
    /// assert_eq!(foo.call(&mut store, (1, 2))?, 3);
571
    /// # Ok(())
572
    /// # }
573
    /// ```
574
    ///
575
    /// We can also do the same thing, but generate a trap if the addition
576
    /// overflows:
577
    ///
578
    /// ```
579
    /// # use wasmtime::*;
580
    /// # fn main() -> anyhow::Result<()> {
581
    /// # let mut store = Store::<()>::default();
582
    /// let add = Func::wrap(&mut store, |a: i32, b: i32| {
583
    ///     match a.checked_add(b) {
584
    ///         Some(i) => Ok(i),
585
    ///         None => Err(Trap::new("overflow")),
586
    ///     }
587
    /// });
588
    /// let module = Module::new(
589
    ///     store.engine(),
590
    ///     r#"
591
    ///         (module
592
    ///             (import "" "" (func $add (param i32 i32) (result i32)))
593
    ///             (func (export "foo") (param i32 i32) (result i32)
594
    ///                 local.get 0
595
    ///                 local.get 1
596
    ///                 call $add))
597
    ///     "#,
598
    /// )?;
599
    /// let instance = Instance::new(&mut store, &module, &[add.into()])?;
600
    /// let foo = instance.get_typed_func::<(i32, i32), i32, _>(&mut store, "foo")?;
601
    /// assert_eq!(foo.call(&mut store, (1, 2))?, 3);
602
    /// assert!(foo.call(&mut store, (i32::max_value(), 1)).is_err());
603
    /// # Ok(())
604
    /// # }
605
    /// ```
606
    ///
607
    /// And don't forget all the wasm types are supported!
608
    ///
609
    /// ```
610
    /// # use wasmtime::*;
611
    /// # fn main() -> anyhow::Result<()> {
612
    /// # let mut store = Store::<()>::default();
613
    /// let debug = Func::wrap(&mut store, |a: i32, b: u32, c: f32, d: i64, e: u64, f: f64| {
614
    ///
615
    ///     println!("a={}", a);
616
    ///     println!("b={}", b);
617
    ///     println!("c={}", c);
618
    ///     println!("d={}", d);
619
    ///     println!("e={}", e);
620
    ///     println!("f={}", f);
621
    /// });
622
    /// let module = Module::new(
623
    ///     store.engine(),
624
    ///     r#"
625
    ///         (module
626
    ///             (import "" "" (func $debug (param i32 i32 f32 i64 i64 f64)))
627
    ///             (func (export "foo")
628
    ///                 i32.const -1
629
    ///                 i32.const 1
630
    ///                 f32.const 2
631
    ///                 i64.const -3
632
    ///                 i64.const 3
633
    ///                 f64.const 4
634
    ///                 call $debug))
635
    ///     "#,
636
    /// )?;
637
    /// let instance = Instance::new(&mut store, &module, &[debug.into()])?;
638
    /// let foo = instance.get_typed_func::<(), (), _>(&mut store, "foo")?;
639
    /// foo.call(&mut store, ())?;
640
    /// # Ok(())
641
    /// # }
642
    /// ```
643
    ///
644
    /// Finally if you want to get really fancy you can also implement
645
    /// imports that read/write wasm module's memory
646
    ///
647
    /// ```
648
    /// use std::str;
649
    ///
650
    /// # use wasmtime::*;
651
    /// # fn main() -> anyhow::Result<()> {
652
    /// # let mut store = Store::default();
653
    /// let log_str = Func::wrap(&mut store, |mut caller: Caller<'_, ()>, ptr: i32, len: i32| {
654
    ///     let mem = match caller.get_export("memory") {
655
    ///         Some(Extern::Memory(mem)) => mem,
656
    ///         _ => return Err(Trap::new("failed to find host memory")),
657
    ///     };
658
    ///     let data = mem.data(&caller)
659
    ///         .get(ptr as u32 as usize..)
660
    ///         .and_then(|arr| arr.get(..len as u32 as usize));
661
    ///     let string = match data {
662
    ///         Some(data) => match str::from_utf8(data) {
663
    ///             Ok(s) => s,
664
    ///             Err(_) => return Err(Trap::new("invalid utf-8")),
665
    ///         },
666
    ///         None => return Err(Trap::new("pointer/length out of bounds")),
667
    ///     };
668
    ///     assert_eq!(string, "Hello, world!");
669
    ///     println!("{}", string);
670
    ///     Ok(())
671
    /// });
672
    /// let module = Module::new(
673
    ///     store.engine(),
674
    ///     r#"
675
    ///         (module
676
    ///             (import "" "" (func $log_str (param i32 i32)))
677
    ///             (func (export "foo")
678
    ///                 i32.const 4   ;; ptr
679
    ///                 i32.const 13  ;; len
680
    ///                 call $log_str)
681
    ///             (memory (export "memory") 1)
682
    ///             (data (i32.const 4) "Hello, world!"))
683
    ///     "#,
684
    /// )?;
685
    /// let instance = Instance::new(&mut store, &module, &[log_str.into()])?;
686
    /// let foo = instance.get_typed_func::<(), (), _>(&mut store, "foo")?;
687
    /// foo.call(&mut store, ())?;
688
    /// # Ok(())
689
    /// # }
690
    /// ```
691
0
    pub fn wrap<T, Params, Results>(
692
0
        mut store: impl AsContextMut<Data = T>,
693
0
        func: impl IntoFunc<T, Params, Results>,
694
0
    ) -> Func {
695
0
        let store = store.as_context_mut().0;
696
0
        // part of this unsafety is about matching the `T` to a `Store<T>`,
697
0
        // which is done through the `AsContextMut` bound above.
698
0
        unsafe {
699
0
            let host = HostFunc::wrap(store.engine(), func);
700
0
            host.into_func(store)
701
0
        }
702
0
    }
703
704
    for_each_function_signature!(generate_wrap_async_func);
705
706
    /// Returns the underlying wasm type that this `Func` has.
707
    ///
708
    /// # Panics
709
    ///
710
    /// Panics if `store` does not own this function.
711
24.2k
    pub fn ty(&self, store: impl AsContext) -> FuncType {
712
24.2k
        self.load_ty(&store.as_context().0)
713
24.2k
    }
<wasmtime::func::Func>::ty::<&mut wasmtime::store::Store<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>
Line
Count
Source
711
23.8k
    pub fn ty(&self, store: impl AsContext) -> FuncType {
712
23.8k
        self.load_ty(&store.as_context().0)
713
23.8k
    }
Unexecuted instantiation: <wasmtime::func::Func>::ty::<_>
<wasmtime::func::Func>::ty::<&mut wasmtime::store::Store<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>
Line
Count
Source
711
417
    pub fn ty(&self, store: impl AsContext) -> FuncType {
712
417
        self.load_ty(&store.as_context().0)
713
417
    }
714
715
    /// Forcibly loads the type of this function from the `Engine`.
716
    ///
717
    /// Note that this is a somewhat expensive method since it requires taking a
718
    /// lock as well as cloning a type.
719
24.2k
    fn load_ty(&self, store: &StoreOpaque) -> FuncType {
720
24.2k
        FuncType::from_wasm_func_type(
721
24.2k
            store
722
24.2k
                .engine()
723
24.2k
                .signatures()
724
24.2k
                .lookup_type(self.sig_index(store.store_data()))
725
24.2k
                .expect("signature should be registered"),
726
24.2k
        )
727
24.2k
    }
728
729
    /// Gets a reference to the `FuncType` for this function.
730
    ///
731
    /// Note that this returns both a reference to the type of this function as
732
    /// well as a reference back to the store itself. This enables using the
733
    /// `StoreOpaque` while the `FuncType` is also being used (from the
734
    /// perspective of the borrow-checker) because otherwise the signature would
735
    /// consider `StoreOpaque` borrowed mutable while `FuncType` is in use.
736
0
    fn ty_ref<'a>(&self, store: &'a mut StoreOpaque) -> (&'a FuncType, &'a StoreOpaque) {
737
0
        // If we haven't loaded our type into the store yet then do so lazily at
738
0
        // this time.
739
0
        if store.store_data()[self.0].ty.is_none() {
740
0
            let ty = self.load_ty(store);
741
0
            store.store_data_mut()[self.0].ty = Some(Box::new(ty));
742
0
        }
743
744
0
        (store.store_data()[self.0].ty.as_ref().unwrap(), store)
745
0
    }
746
747
24.2k
    pub(crate) fn sig_index(&self, data: &StoreData) -> VMSharedSignatureIndex {
748
24.2k
        data[self.0].sig_index()
749
24.2k
    }
750
751
    /// Invokes this function with the `params` given and writes returned values
752
    /// to `results`.
753
    ///
754
    /// The `params` here must match the type signature of this `Func`, or a
755
    /// trap will occur. If a trap occurs while executing this function, then a
756
    /// trap will also be returned. Additionally `results` must have the same
757
    /// length as the number of results for this function.
758
    ///
759
    /// # Panics
760
    ///
761
    /// This function will panic if called on a function belonging to an async
762
    /// store. Asynchronous stores must always use `call_async`.
763
    /// initiates a panic. Also panics if `store` does not own this function.
764
0
    pub fn call(
765
0
        &self,
766
0
        mut store: impl AsContextMut,
767
0
        params: &[Val],
768
0
        results: &mut [Val],
769
0
    ) -> Result<()> {
770
0
        assert!(
771
0
            !store.as_context().async_support(),
772
0
            "must use `call_async` when async support is enabled on the config",
773
        );
774
0
        self.call_impl(&mut store.as_context_mut(), params, results)
775
0
    }
776
777
    /// Invokes this function in an "unchecked" fashion, reading parameters and
778
    /// writing results to `params_and_returns`.
779
    ///
780
    /// This function is the same as [`Func::call`] except that the arguments
781
    /// and results both use a different representation. If possible it's
782
    /// recommended to use [`Func::call`] if safety isn't necessary or to use
783
    /// [`Func::typed`] in conjunction with [`TypedFunc::call`] since that's
784
    /// both safer and faster than this method of invoking a function.
785
    ///
786
    /// Note that if this function takes `externref` arguments then it will
787
    /// **not** automatically GC unlike the [`Func::call`] and
788
    /// [`TypedFunc::call`] functions. This means that if this function is
789
    /// invoked many times with new `ExternRef` values and no other GC happens
790
    /// via any other means then no values will get collected.
791
    ///
792
    /// # Unsafety
793
    ///
794
    /// This function is unsafe because the `params_and_returns` argument is not
795
    /// validated at all. It must uphold invariants such as:
796
    ///
797
    /// * It's a valid pointer to an array
798
    /// * It has enough space to store all parameters
799
    /// * It has enough space to store all results (not at the same time as
800
    ///   parameters)
801
    /// * Parameters are initially written to the array and have the correct
802
    ///   types and such.
803
    /// * Reference types like `externref` and `funcref` are valid at the
804
    ///   time of this call and for the `store` specified.
805
    ///
806
    /// These invariants are all upheld for you with [`Func::call`] and
807
    /// [`TypedFunc::call`].
808
0
    pub unsafe fn call_unchecked(
809
0
        &self,
810
0
        mut store: impl AsContextMut,
811
0
        params_and_returns: *mut ValRaw,
812
0
    ) -> Result<(), Trap> {
813
0
        let mut store = store.as_context_mut();
814
0
        let data = &store.0.store_data()[self.0];
815
0
        let anyfunc = data.export().anyfunc;
816
0
        let trampoline = data.trampoline();
817
0
        Self::call_unchecked_raw(&mut store, anyfunc, trampoline, params_and_returns)
818
0
    }
819
820
0
    pub(crate) unsafe fn call_unchecked_raw<T>(
821
0
        store: &mut StoreContextMut<'_, T>,
822
0
        anyfunc: NonNull<VMCallerCheckedAnyfunc>,
823
0
        trampoline: VMTrampoline,
824
0
        params_and_returns: *mut ValRaw,
825
0
    ) -> Result<(), Trap> {
826
0
        invoke_wasm_and_catch_traps(store, |caller| {
827
0
            let trampoline = wasmtime_runtime::prepare_host_to_wasm_trampoline(caller, trampoline);
828
0
            trampoline(
829
0
                anyfunc.as_ref().vmctx,
830
0
                caller,
831
0
                anyfunc.as_ref().func_ptr.as_ptr(),
832
0
                params_and_returns,
833
0
            )
834
0
        })
835
0
    }
836
837
    /// Converts the raw representation of a `funcref` into an `Option<Func>`
838
    ///
839
    /// This is intended to be used in conjunction with [`Func::new_unchecked`],
840
    /// [`Func::call_unchecked`], and [`ValRaw`] with its `funcref` field.
841
    ///
842
    /// # Unsafety
843
    ///
844
    /// This function is not safe because `raw` is not validated at all. The
845
    /// caller must guarantee that `raw` is owned by the `store` provided and is
846
    /// valid within the `store`.
847
0
    pub unsafe fn from_raw(mut store: impl AsContextMut, raw: usize) -> Option<Func> {
848
0
        Func::from_caller_checked_anyfunc(store.as_context_mut().0, raw as *mut _)
849
0
    }
Unexecuted instantiation: <wasmtime::func::Func>::from_raw::<wasmtime::store::context::StoreContextMut<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>
Unexecuted instantiation: <wasmtime::func::Func>::from_raw::<_>
Unexecuted instantiation: <wasmtime::func::Func>::from_raw::<wasmtime::store::context::StoreContextMut<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>
850
851
    /// Extracts the raw value of this `Func`, which is owned by `store`.
852
    ///
853
    /// This function returns a value that's suitable for writing into the
854
    /// `funcref` field of the [`ValRaw`] structure.
855
    ///
856
    /// # Unsafety
857
    ///
858
    /// The returned value is only valid for as long as the store is alive and
859
    /// this function is properly rooted within it. Additionally this function
860
    /// should not be liberally used since it's a very low-level knob.
861
0
    pub unsafe fn to_raw(&self, store: impl AsContext) -> usize {
862
0
        self.caller_checked_anyfunc(store.as_context().0).as_ptr() as usize
863
0
    }
864
865
    /// Invokes this function with the `params` given, returning the results
866
    /// asynchronously.
867
    ///
868
    /// This function is the same as [`Func::call`] except that it is
869
    /// asynchronous. This is only compatible with stores associated with an
870
    /// [asynchronous config](crate::Config::async_support).
871
    ///
872
    /// It's important to note that the execution of WebAssembly will happen
873
    /// synchronously in the `poll` method of the future returned from this
874
    /// function. Wasmtime does not manage its own thread pool or similar to
875
    /// execute WebAssembly in. Future `poll` methods are generally expected to
876
    /// resolve quickly, so it's recommended that you run or poll this future
877
    /// in a "blocking context".
878
    ///
879
    /// For more information see the documentation on [asynchronous
880
    /// configs](crate::Config::async_support).
881
    ///
882
    /// # Panics
883
    ///
884
    /// Panics if this is called on a function in a synchronous store. This
885
    /// only works with functions defined within an asynchronous store. Also
886
    /// panics if `store` does not own this function.
887
    #[cfg(feature = "async")]
888
    #[cfg_attr(nightlydoc, doc(cfg(feature = "async")))]
889
    pub async fn call_async<T>(
890
        &self,
891
        mut store: impl AsContextMut<Data = T>,
892
        params: &[Val],
893
        results: &mut [Val],
894
    ) -> Result<()>
895
    where
896
        T: Send,
897
    {
898
        let mut store = store.as_context_mut();
899
        assert!(
900
            store.0.async_support(),
901
            "cannot use `call_async` without enabling async support in the config",
902
        );
903
        let result = store
904
            .on_fiber(|store| self.call_impl(store, params, results))
905
            .await??;
906
        Ok(result)
907
    }
908
909
0
    fn call_impl<T>(
910
0
        &self,
911
0
        store: &mut StoreContextMut<'_, T>,
912
0
        params: &[Val],
913
0
        results: &mut [Val],
914
0
    ) -> Result<()> {
915
0
        // We need to perform a dynamic check that the arguments given to us
916
0
        // match the signature of this function and are appropriate to pass to
917
0
        // this function. This involves checking to make sure we have the right
918
0
        // number and types of arguments as well as making sure everything is
919
0
        // from the same `Store`.
920
0
        let (ty, opaque) = self.ty_ref(store.0);
921
0
        if ty.params().len() != params.len() {
922
0
            bail!(
923
0
                "expected {} arguments, got {}",
924
0
                ty.params().len(),
925
0
                params.len()
926
0
            );
927
0
        }
928
0
        if ty.results().len() != results.len() {
929
0
            bail!(
930
0
                "expected {} results, got {}",
931
0
                ty.results().len(),
932
0
                results.len()
933
0
            );
934
0
        }
935
0
        for (ty, arg) in ty.params().zip(params) {
936
0
            if arg.ty() != ty {
937
0
                bail!(
938
0
                    "argument type mismatch: found {} but expected {}",
939
0
                    arg.ty(),
940
0
                    ty
941
0
                );
942
0
            }
943
0
            if !arg.comes_from_same_store(opaque) {
944
0
                bail!("cross-`Store` values are not currently supported");
945
0
            }
946
        }
947
948
0
        let values_vec_size = params.len().max(ty.results().len());
949
0
950
0
        // Whenever we pass `externref`s from host code to Wasm code, they
951
0
        // go into the `VMExternRefActivationsTable`. But the table might be
952
0
        // at capacity already, so check for that. If it is at capacity
953
0
        // (unlikely) then do a GC to free up space. This is necessary
954
0
        // because otherwise we would either keep filling up the bump chunk
955
0
        // and making it larger and larger or we would always take the slow
956
0
        // path when inserting references into the table.
957
0
        if ty.as_wasm_func_type().externref_params_count()
958
0
            > store
959
0
                .0
960
0
                .externref_activations_table()
961
0
                .bump_capacity_remaining()
962
0
        {
963
0
            store.gc();
964
0
        }
965
966
        // Store the argument values into `values_vec`.
967
0
        let mut values_vec = store.0.take_wasm_val_raw_storage();
968
0
        debug_assert!(values_vec.is_empty());
969
0
        values_vec.resize_with(values_vec_size, || ValRaw::i32(0));
970
0
        for (arg, slot) in params.iter().cloned().zip(&mut values_vec) {
971
0
            unsafe {
972
0
                *slot = arg.to_raw(&mut *store);
973
0
            }
974
        }
975
976
        unsafe {
977
0
            self.call_unchecked(&mut *store, values_vec.as_mut_ptr())?;
978
        }
979
980
0
        for ((i, slot), val) in results.iter_mut().enumerate().zip(&values_vec) {
981
0
            let ty = self.ty_ref(store.0).0.results().nth(i).unwrap();
982
0
            *slot = unsafe { Val::from_raw(&mut *store, *val, ty) };
983
0
        }
984
0
        values_vec.truncate(0);
985
0
        store.0.save_wasm_val_raw_storage(values_vec);
986
0
        Ok(())
987
0
    }
988
989
    #[inline]
990
220k
    pub(crate) fn caller_checked_anyfunc(
991
220k
        &self,
992
220k
        store: &StoreOpaque,
993
220k
    ) -> NonNull<VMCallerCheckedAnyfunc> {
994
220k
        store.store_data()[self.0].export().anyfunc
995
220k
    }
996
997
24.2k
    pub(crate) unsafe fn from_wasmtime_function(
998
24.2k
        export: ExportFunction,
999
24.2k
        store: &mut StoreOpaque,
1000
24.2k
    ) -> Self {
1001
24.2k
        let anyfunc = export.anyfunc.as_ref();
1002
24.2k
        let trampoline = store.lookup_trampoline(&*anyfunc);
1003
24.2k
        Func::from_func_kind(FuncKind::StoreOwned { trampoline, export }, store)
1004
24.2k
    }
1005
1006
220k
    fn from_func_kind(kind: FuncKind, store: &mut StoreOpaque) -> Self {
1007
220k
        Func(store.store_data_mut().insert(FuncData { kind, ty: None }))
1008
220k
    }
1009
1010
196k
    pub(crate) fn vmimport(&self, store: &mut StoreOpaque) -> VMFunctionImport {
1011
196k
        unsafe {
1012
196k
            let f = self.caller_checked_anyfunc(store);
1013
196k
            VMFunctionImport {
1014
196k
                body: f.as_ref().func_ptr,
1015
196k
                vmctx: f.as_ref().vmctx,
1016
196k
            }
1017
196k
        }
1018
196k
    }
1019
1020
0
    pub(crate) fn comes_from_same_store(&self, store: &StoreOpaque) -> bool {
1021
0
        store.store_data().contains(self.0)
1022
0
    }
1023
1024
0
    fn invoke<T>(
1025
0
        mut caller: Caller<'_, T>,
1026
0
        ty: &FuncType,
1027
0
        values_vec: &mut [ValRaw],
1028
0
        func: &dyn Fn(Caller<'_, T>, &[Val], &mut [Val]) -> Result<(), Trap>,
1029
0
    ) -> Result<(), Trap> {
1030
0
        // Translate the raw JIT arguments in `values_vec` into a `Val` which
1031
0
        // we'll be passing as a slice. The storage for our slice-of-`Val` we'll
1032
0
        // be taking from the `Store`. We preserve our slice back into the
1033
0
        // `Store` after the hostcall, ideally amortizing the cost of allocating
1034
0
        // the storage across wasm->host calls.
1035
0
        //
1036
0
        // Note that we have a dynamic guarantee that `values_vec` is the
1037
0
        // appropriate length to both read all arguments from as well as store
1038
0
        // all results into.
1039
0
        let mut val_vec = caller.store.0.take_hostcall_val_storage();
1040
0
        debug_assert!(val_vec.is_empty());
1041
0
        let nparams = ty.params().len();
1042
0
        val_vec.reserve(nparams + ty.results().len());
1043
0
        for (i, ty) in ty.params().enumerate() {
1044
0
            val_vec.push(unsafe { Val::from_raw(&mut caller.store, values_vec[i], ty) })
1045
        }
1046
1047
0
        val_vec.extend((0..ty.results().len()).map(|_| Val::null()));
1048
0
        let (params, results) = val_vec.split_at_mut(nparams);
1049
0
        func(caller.sub_caller(), params, results)?;
1050
1051
        // See the comment in `Func::call_impl`'s `write_params` function.
1052
0
        if ty.as_wasm_func_type().externref_returns_count()
1053
0
            > caller
1054
0
                .store
1055
0
                .0
1056
0
                .externref_activations_table()
1057
0
                .bump_capacity_remaining()
1058
0
        {
1059
0
            caller.store.gc();
1060
0
        }
1061
1062
        // Unlike our arguments we need to dynamically check that the return
1063
        // values produced are correct. There could be a bug in `func` that
1064
        // produces the wrong number, wrong types, or wrong stores of
1065
        // values, and we need to catch that here.
1066
0
        for (i, (ret, ty)) in results.iter().zip(ty.results()).enumerate() {
1067
0
            if ret.ty() != ty {
1068
0
                return Err(Trap::new(
1069
0
                    "function attempted to return an incompatible value",
1070
0
                ));
1071
0
            }
1072
0
            if !ret.comes_from_same_store(caller.store.0) {
1073
0
                return Err(Trap::new(
1074
0
                    "cross-`Store` values are not currently supported",
1075
0
                ));
1076
0
            }
1077
0
            unsafe {
1078
0
                values_vec[i] = ret.to_raw(&mut caller.store);
1079
0
            }
1080
        }
1081
1082
        // Restore our `val_vec` back into the store so it's usable for the next
1083
        // hostcall to reuse our own storage.
1084
0
        val_vec.truncate(0);
1085
0
        caller.store.0.save_hostcall_val_storage(val_vec);
1086
0
        Ok(())
1087
0
    }
1088
1089
    /// Attempts to extract a typed object from this `Func` through which the
1090
    /// function can be called.
1091
    ///
1092
    /// This function serves as an alternative to [`Func::call`] and
1093
    /// [`Func::call_async`]. This method performs a static type check (using
1094
    /// the `Params` and `Results` type parameters on the underlying wasm
1095
    /// function. If the type check passes then a `TypedFunc` object is returned,
1096
    /// otherwise an error is returned describing the typecheck failure.
1097
    ///
1098
    /// The purpose of this relative to [`Func::call`] is that it's much more
1099
    /// efficient when used to invoke WebAssembly functions. With the types
1100
    /// statically known far less setup/teardown is required when invoking
1101
    /// WebAssembly. If speed is desired then this function is recommended to be
1102
    /// used instead of [`Func::call`] (which is more general, hence its
1103
    /// slowdown).
1104
    ///
1105
    /// The `Params` type parameter is used to describe the parameters of the
1106
    /// WebAssembly function. This can either be a single type (like `i32`), or
1107
    /// a tuple of types representing the list of parameters (like `(i32, f32,
1108
    /// f64)`). Additionally you can use `()` to represent that the function has
1109
    /// no parameters.
1110
    ///
1111
    /// The `Results` type parameter is used to describe the results of the
1112
    /// function. This behaves the same way as `Params`, but just for the
1113
    /// results of the function.
1114
    ///
1115
    /// The `S` type parameter represents the method of passing in the store
1116
    /// context, and can typically be specified as simply `_` when calling this
1117
    /// function.
1118
    ///
1119
    /// Translation between Rust types and WebAssembly types looks like:
1120
    ///
1121
    /// | WebAssembly | Rust                |
1122
    /// |-------------|---------------------|
1123
    /// | `i32`       | `i32` or `u32`      |
1124
    /// | `i64`       | `i64` or `u64`      |
1125
    /// | `f32`       | `f32`               |
1126
    /// | `f64`       | `f64`               |
1127
    /// | `externref` | `Option<ExternRef>` |
1128
    /// | `funcref`   | `Option<Func>`      |
1129
    /// | `v128`      | not supported       |
1130
    ///
1131
    /// (note that this mapping is the same as that of [`Func::wrap`]).
1132
    ///
1133
    /// Note that once the [`TypedFunc`] return value is acquired you'll use either
1134
    /// [`TypedFunc::call`] or [`TypedFunc::call_async`] as necessary to actually invoke
1135
    /// the function. This method does not invoke any WebAssembly code, it
1136
    /// simply performs a typecheck before returning the [`TypedFunc`] value.
1137
    ///
1138
    /// This method also has a convenience wrapper as
1139
    /// [`Instance::get_typed_func`](crate::Instance::get_typed_func) to
1140
    /// directly get a typed function value from an
1141
    /// [`Instance`](crate::Instance).
1142
    ///
1143
    /// # Errors
1144
    ///
1145
    /// This function will return an error if `Params` or `Results` does not
1146
    /// match the native type of this WebAssembly function.
1147
    ///
1148
    /// # Panics
1149
    ///
1150
    /// This method will panic if `store` does not own this function.
1151
    ///
1152
    /// # Examples
1153
    ///
1154
    /// An end-to-end example of calling a function which takes no parameters
1155
    /// and has no results:
1156
    ///
1157
    /// ```
1158
    /// # use wasmtime::*;
1159
    /// # fn main() -> anyhow::Result<()> {
1160
    /// let engine = Engine::default();
1161
    /// let mut store = Store::new(&engine, ());
1162
    /// let module = Module::new(&engine, r#"(module (func (export "foo")))"#)?;
1163
    /// let instance = Instance::new(&mut store, &module, &[])?;
1164
    /// let foo = instance.get_func(&mut store, "foo").expect("export wasn't a function");
1165
    ///
1166
    /// // Note that this call can fail due to the typecheck not passing, but
1167
    /// // in our case we statically know the module so we know this should
1168
    /// // pass.
1169
    /// let typed = foo.typed::<(), (), _>(&store)?;
1170
    ///
1171
    /// // Note that this can fail if the wasm traps at runtime.
1172
    /// typed.call(&mut store, ())?;
1173
    /// # Ok(())
1174
    /// # }
1175
    /// ```
1176
    ///
1177
    /// You can also pass in multiple parameters and get a result back
1178
    ///
1179
    /// ```
1180
    /// # use wasmtime::*;
1181
    /// # fn foo(add: &Func, mut store: Store<()>) -> anyhow::Result<()> {
1182
    /// let typed = add.typed::<(i32, i64), f32, _>(&store)?;
1183
    /// assert_eq!(typed.call(&mut store, (1, 2))?, 3.0);
1184
    /// # Ok(())
1185
    /// # }
1186
    /// ```
1187
    ///
1188
    /// and similarly if a function has multiple results you can bind that too
1189
    ///
1190
    /// ```
1191
    /// # use wasmtime::*;
1192
    /// # fn foo(add_with_overflow: &Func, mut store: Store<()>) -> anyhow::Result<()> {
1193
    /// let typed = add_with_overflow.typed::<(u32, u32), (u32, i32), _>(&store)?;
1194
    /// let (result, overflow) = typed.call(&mut store, (u32::max_value(), 2))?;
1195
    /// assert_eq!(result, 1);
1196
    /// assert_eq!(overflow, 1);
1197
    /// # Ok(())
1198
    /// # }
1199
    /// ```
1200
24.2k
    pub fn typed<Params, Results, S>(&self, store: S) -> Result<TypedFunc<Params, Results>>
1201
24.2k
    where
1202
24.2k
        Params: WasmParams,
1203
24.2k
        Results: WasmResults,
1204
24.2k
        S: AsContext,
1205
24.2k
    {
1206
24.2k
        // Type-check that the params/results are all valid
1207
24.2k
        let ty = self.ty(store);
1208
24.2k
        Params::typecheck(ty.params()).context("type mismatch with parameters")?;
1209
24.2k
        Results::typecheck(ty.results()).context("type mismatch with results")?;
1210
1211
        // and then we can construct the typed version of this function
1212
        // (unsafely), which should be safe since we just did the type check above.
1213
24.2k
        unsafe { Ok(TypedFunc::new_unchecked(*self)) }
1214
24.2k
    }
<wasmtime::func::Func>::typed::<(u32,), u32, &mut wasmtime::store::Store<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>
Line
Count
Source
1200
23.8k
    pub fn typed<Params, Results, S>(&self, store: S) -> Result<TypedFunc<Params, Results>>
1201
23.8k
    where
1202
23.8k
        Params: WasmParams,
1203
23.8k
        Results: WasmResults,
1204
23.8k
        S: AsContext,
1205
23.8k
    {
1206
23.8k
        // Type-check that the params/results are all valid
1207
23.8k
        let ty = self.ty(store);
1208
23.8k
        Params::typecheck(ty.params()).context("type mismatch with parameters")?;
1209
23.8k
        Results::typecheck(ty.results()).context("type mismatch with results")?;
1210
1211
        // and then we can construct the typed version of this function
1212
        // (unsafely), which should be safe since we just did the type check above.
1213
23.8k
        unsafe { Ok(TypedFunc::new_unchecked(*self)) }
1214
23.8k
    }
Unexecuted instantiation: <wasmtime::func::Func>::typed::<_, _, _>
<wasmtime::func::Func>::typed::<(u32,), u32, &mut wasmtime::store::Store<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>
Line
Count
Source
1200
417
    pub fn typed<Params, Results, S>(&self, store: S) -> Result<TypedFunc<Params, Results>>
1201
417
    where
1202
417
        Params: WasmParams,
1203
417
        Results: WasmResults,
1204
417
        S: AsContext,
1205
417
    {
1206
417
        // Type-check that the params/results are all valid
1207
417
        let ty = self.ty(store);
1208
417
        Params::typecheck(ty.params()).context("type mismatch with parameters")?;
1209
417
        Results::typecheck(ty.results()).context("type mismatch with results")?;
1210
1211
        // and then we can construct the typed version of this function
1212
        // (unsafely), which should be safe since we just did the type check above.
1213
417
        unsafe { Ok(TypedFunc::new_unchecked(*self)) }
1214
417
    }
1215
}
1216
1217
/// Prepares for entrance into WebAssembly.
1218
///
1219
/// This function will set up context such that `closure` is allowed to call a
1220
/// raw trampoline or a raw WebAssembly function. This *must* be called to do
1221
/// things like catch traps and set up GC properly.
1222
///
1223
/// The `closure` provided receives a default "caller" `VMContext` parameter it
1224
/// can pass to the called wasm function, if desired.
1225
24.2k
pub(crate) fn invoke_wasm_and_catch_traps<T>(
1226
24.2k
    store: &mut StoreContextMut<'_, T>,
1227
24.2k
    closure: impl FnMut(*mut VMContext),
1228
24.2k
) -> Result<(), Trap> {
1229
24.2k
    unsafe {
1230
24.2k
        let exit = enter_wasm(store);
1231
1232
24.2k
        if let Err(trap) = store.0.call_hook(CallHook::CallingWasm) {
1233
0
            exit_wasm(store, exit);
1234
0
            return Err(trap);
1235
24.2k
        }
1236
24.2k
        let result = wasmtime_runtime::catch_traps(
1237
24.2k
            store.0.signal_handler(),
1238
24.2k
            store.0.engine().config().wasm_backtrace,
1239
24.2k
            store.0.default_caller(),
1240
24.2k
            closure,
1241
24.2k
        );
1242
24.2k
        exit_wasm(store, exit);
1243
24.2k
        store.0.call_hook(CallHook::ReturningFromWasm)?;
1244
24.2k
        result.map_err(|t| Trap::from_runtime_box(store.0, t))
wasmtime::func::invoke_wasm_and_catch_traps::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::func::typed::TypedFunc<(u32,), u32>>::call_raw<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>::{closure#0}>::{closure#0}
Line
Count
Source
1244
1.20k
        result.map_err(|t| Trap::from_runtime_box(store.0, t))
Unexecuted instantiation: wasmtime::func::invoke_wasm_and_catch_traps::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::instance::Instance>::start_raw<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>::{closure#0}>::{closure#0}
Unexecuted instantiation: wasmtime::func::invoke_wasm_and_catch_traps::<_, _>::{closure#0}
Unexecuted instantiation: wasmtime::func::invoke_wasm_and_catch_traps::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::instance::Instance>::start_raw<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>::{closure#0}>::{closure#0}
wasmtime::func::invoke_wasm_and_catch_traps::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::func::typed::TypedFunc<(u32,), u32>>::call_raw<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>::{closure#0}>::{closure#0}
Line
Count
Source
1244
417
        result.map_err(|t| Trap::from_runtime_box(store.0, t))
1245
    }
1246
24.2k
}
Unexecuted instantiation: wasmtime::func::invoke_wasm_and_catch_traps::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::instance::Instance>::start_raw<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>::{closure#0}>
wasmtime::func::invoke_wasm_and_catch_traps::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::func::typed::TypedFunc<(u32,), u32>>::call_raw<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>::{closure#0}>
Line
Count
Source
1225
23.8k
pub(crate) fn invoke_wasm_and_catch_traps<T>(
1226
23.8k
    store: &mut StoreContextMut<'_, T>,
1227
23.8k
    closure: impl FnMut(*mut VMContext),
1228
23.8k
) -> Result<(), Trap> {
1229
23.8k
    unsafe {
1230
23.8k
        let exit = enter_wasm(store);
1231
1232
23.8k
        if let Err(trap) = store.0.call_hook(CallHook::CallingWasm) {
1233
0
            exit_wasm(store, exit);
1234
0
            return Err(trap);
1235
23.8k
        }
1236
23.8k
        let result = wasmtime_runtime::catch_traps(
1237
23.8k
            store.0.signal_handler(),
1238
23.8k
            store.0.engine().config().wasm_backtrace,
1239
23.8k
            store.0.default_caller(),
1240
23.8k
            closure,
1241
23.8k
        );
1242
23.8k
        exit_wasm(store, exit);
1243
23.8k
        store.0.call_hook(CallHook::ReturningFromWasm)?;
1244
23.8k
        result.map_err(|t| Trap::from_runtime_box(store.0, t))
1245
    }
1246
23.8k
}
Unexecuted instantiation: wasmtime::func::invoke_wasm_and_catch_traps::<_, _>
Unexecuted instantiation: wasmtime::func::invoke_wasm_and_catch_traps::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::instance::Instance>::start_raw<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>::{closure#0}>
wasmtime::func::invoke_wasm_and_catch_traps::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::func::typed::TypedFunc<(u32,), u32>>::call_raw<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>::{closure#0}>
Line
Count
Source
1225
417
pub(crate) fn invoke_wasm_and_catch_traps<T>(
1226
417
    store: &mut StoreContextMut<'_, T>,
1227
417
    closure: impl FnMut(*mut VMContext),
1228
417
) -> Result<(), Trap> {
1229
417
    unsafe {
1230
417
        let exit = enter_wasm(store);
1231
1232
417
        if let Err(trap) = store.0.call_hook(CallHook::CallingWasm) {
1233
0
            exit_wasm(store, exit);
1234
0
            return Err(trap);
1235
417
        }
1236
417
        let result = wasmtime_runtime::catch_traps(
1237
417
            store.0.signal_handler(),
1238
417
            store.0.engine().config().wasm_backtrace,
1239
417
            store.0.default_caller(),
1240
417
            closure,
1241
417
        );
1242
417
        exit_wasm(store, exit);
1243
417
        store.0.call_hook(CallHook::ReturningFromWasm)?;
1244
417
        result.map_err(|t| Trap::from_runtime_box(store.0, t))
1245
    }
1246
417
}
1247
1248
/// This function is called to register state within `Store` whenever
1249
/// WebAssembly is entered within the `Store`.
1250
///
1251
/// This function sets up various limits such as:
1252
///
1253
/// * The stack limit. This is what ensures that we limit the stack space
1254
///   allocated by WebAssembly code and it's relative to the initial stack
1255
///   pointer that called into wasm.
1256
///
1257
/// This function may fail if the the stack limit can't be set because an
1258
/// interrupt already happened.
1259
24.2k
fn enter_wasm<T>(store: &mut StoreContextMut<'_, T>) -> Option<usize> {
1260
24.2k
    // If this is a recursive call, e.g. our stack limit is already set, then
1261
24.2k
    // we may be able to skip this function.
1262
24.2k
    //
1263
24.2k
    // For synchronous stores there's nothing else to do because all wasm calls
1264
24.2k
    // happen synchronously and on the same stack. This means that the previous
1265
24.2k
    // stack limit will suffice for the next recursive call.
1266
24.2k
    //
1267
24.2k
    // For asynchronous stores then each call happens on a separate native
1268
24.2k
    // stack. This means that the previous stack limit is no longer relevant
1269
24.2k
    // because we're on a separate stack.
1270
24.2k
    if unsafe { *store.0.runtime_limits().stack_limit.get() } != usize::MAX
1271
0
        && !store.0.async_support()
1272
    {
1273
0
        return None;
1274
24.2k
    }
1275
24.2k
1276
24.2k
    let stack_pointer = psm::stack_pointer() as usize;
1277
24.2k
1278
24.2k
    // Determine the stack pointer where, after which, any wasm code will
1279
24.2k
    // immediately trap. This is checked on the entry to all wasm functions.
1280
24.2k
    //
1281
24.2k
    // Note that this isn't 100% precise. We are requested to give wasm
1282
24.2k
    // `max_wasm_stack` bytes, but what we're actually doing is giving wasm
1283
24.2k
    // probably a little less than `max_wasm_stack` because we're
1284
24.2k
    // calculating the limit relative to this function's approximate stack
1285
24.2k
    // pointer. Wasm will be executed on a frame beneath this one (or next
1286
24.2k
    // to it). In any case it's expected to be at most a few hundred bytes
1287
24.2k
    // of slop one way or another. When wasm is typically given a MB or so
1288
24.2k
    // (a million bytes) the slop shouldn't matter too much.
1289
24.2k
    //
1290
24.2k
    // After we've got the stack limit then we store it into the `stack_limit`
1291
24.2k
    // variable.
1292
24.2k
    let wasm_stack_limit = stack_pointer - store.engine().config().max_wasm_stack;
1293
24.2k
    let prev_stack = unsafe {
1294
24.2k
        mem::replace(
1295
24.2k
            &mut *store.0.runtime_limits().stack_limit.get(),
1296
24.2k
            wasm_stack_limit,
1297
24.2k
        )
1298
24.2k
    };
1299
24.2k
1300
24.2k
    Some(prev_stack)
1301
24.2k
}
wasmtime::func::enter_wasm::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>
Line
Count
Source
1259
23.8k
fn enter_wasm<T>(store: &mut StoreContextMut<'_, T>) -> Option<usize> {
1260
23.8k
    // If this is a recursive call, e.g. our stack limit is already set, then
1261
23.8k
    // we may be able to skip this function.
1262
23.8k
    //
1263
23.8k
    // For synchronous stores there's nothing else to do because all wasm calls
1264
23.8k
    // happen synchronously and on the same stack. This means that the previous
1265
23.8k
    // stack limit will suffice for the next recursive call.
1266
23.8k
    //
1267
23.8k
    // For asynchronous stores then each call happens on a separate native
1268
23.8k
    // stack. This means that the previous stack limit is no longer relevant
1269
23.8k
    // because we're on a separate stack.
1270
23.8k
    if unsafe { *store.0.runtime_limits().stack_limit.get() } != usize::MAX
1271
0
        && !store.0.async_support()
1272
    {
1273
0
        return None;
1274
23.8k
    }
1275
23.8k
1276
23.8k
    let stack_pointer = psm::stack_pointer() as usize;
1277
23.8k
1278
23.8k
    // Determine the stack pointer where, after which, any wasm code will
1279
23.8k
    // immediately trap. This is checked on the entry to all wasm functions.
1280
23.8k
    //
1281
23.8k
    // Note that this isn't 100% precise. We are requested to give wasm
1282
23.8k
    // `max_wasm_stack` bytes, but what we're actually doing is giving wasm
1283
23.8k
    // probably a little less than `max_wasm_stack` because we're
1284
23.8k
    // calculating the limit relative to this function's approximate stack
1285
23.8k
    // pointer. Wasm will be executed on a frame beneath this one (or next
1286
23.8k
    // to it). In any case it's expected to be at most a few hundred bytes
1287
23.8k
    // of slop one way or another. When wasm is typically given a MB or so
1288
23.8k
    // (a million bytes) the slop shouldn't matter too much.
1289
23.8k
    //
1290
23.8k
    // After we've got the stack limit then we store it into the `stack_limit`
1291
23.8k
    // variable.
1292
23.8k
    let wasm_stack_limit = stack_pointer - store.engine().config().max_wasm_stack;
1293
23.8k
    let prev_stack = unsafe {
1294
23.8k
        mem::replace(
1295
23.8k
            &mut *store.0.runtime_limits().stack_limit.get(),
1296
23.8k
            wasm_stack_limit,
1297
23.8k
        )
1298
23.8k
    };
1299
23.8k
1300
23.8k
    Some(prev_stack)
1301
23.8k
}
Unexecuted instantiation: wasmtime::func::enter_wasm::<_>
wasmtime::func::enter_wasm::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>
Line
Count
Source
1259
417
fn enter_wasm<T>(store: &mut StoreContextMut<'_, T>) -> Option<usize> {
1260
417
    // If this is a recursive call, e.g. our stack limit is already set, then
1261
417
    // we may be able to skip this function.
1262
417
    //
1263
417
    // For synchronous stores there's nothing else to do because all wasm calls
1264
417
    // happen synchronously and on the same stack. This means that the previous
1265
417
    // stack limit will suffice for the next recursive call.
1266
417
    //
1267
417
    // For asynchronous stores then each call happens on a separate native
1268
417
    // stack. This means that the previous stack limit is no longer relevant
1269
417
    // because we're on a separate stack.
1270
417
    if unsafe { *store.0.runtime_limits().stack_limit.get() } != usize::MAX
1271
0
        && !store.0.async_support()
1272
    {
1273
0
        return None;
1274
417
    }
1275
417
1276
417
    let stack_pointer = psm::stack_pointer() as usize;
1277
417
1278
417
    // Determine the stack pointer where, after which, any wasm code will
1279
417
    // immediately trap. This is checked on the entry to all wasm functions.
1280
417
    //
1281
417
    // Note that this isn't 100% precise. We are requested to give wasm
1282
417
    // `max_wasm_stack` bytes, but what we're actually doing is giving wasm
1283
417
    // probably a little less than `max_wasm_stack` because we're
1284
417
    // calculating the limit relative to this function's approximate stack
1285
417
    // pointer. Wasm will be executed on a frame beneath this one (or next
1286
417
    // to it). In any case it's expected to be at most a few hundred bytes
1287
417
    // of slop one way or another. When wasm is typically given a MB or so
1288
417
    // (a million bytes) the slop shouldn't matter too much.
1289
417
    //
1290
417
    // After we've got the stack limit then we store it into the `stack_limit`
1291
417
    // variable.
1292
417
    let wasm_stack_limit = stack_pointer - store.engine().config().max_wasm_stack;
1293
417
    let prev_stack = unsafe {
1294
417
        mem::replace(
1295
417
            &mut *store.0.runtime_limits().stack_limit.get(),
1296
417
            wasm_stack_limit,
1297
417
        )
1298
417
    };
1299
417
1300
417
    Some(prev_stack)
1301
417
}
1302
1303
24.2k
fn exit_wasm<T>(store: &mut StoreContextMut<'_, T>, prev_stack: Option<usize>) {
1304
    // If we don't have a previous stack pointer to restore, then there's no
1305
    // cleanup we need to perform here.
1306
24.2k
    let prev_stack = match prev_stack {
1307
24.2k
        Some(stack) => stack,
1308
0
        None => return,
1309
    };
1310
1311
24.2k
    unsafe {
1312
24.2k
        *store.0.runtime_limits().stack_limit.get() = prev_stack;
1313
24.2k
    }
1314
24.2k
}
wasmtime::func::exit_wasm::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>
Line
Count
Source
1303
23.8k
fn exit_wasm<T>(store: &mut StoreContextMut<'_, T>, prev_stack: Option<usize>) {
1304
    // If we don't have a previous stack pointer to restore, then there's no
1305
    // cleanup we need to perform here.
1306
23.8k
    let prev_stack = match prev_stack {
1307
23.8k
        Some(stack) => stack,
1308
0
        None => return,
1309
    };
1310
1311
23.8k
    unsafe {
1312
23.8k
        *store.0.runtime_limits().stack_limit.get() = prev_stack;
1313
23.8k
    }
1314
23.8k
}
Unexecuted instantiation: wasmtime::func::exit_wasm::<_>
wasmtime::func::exit_wasm::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>
Line
Count
Source
1303
417
fn exit_wasm<T>(store: &mut StoreContextMut<'_, T>, prev_stack: Option<usize>) {
1304
    // If we don't have a previous stack pointer to restore, then there's no
1305
    // cleanup we need to perform here.
1306
417
    let prev_stack = match prev_stack {
1307
417
        Some(stack) => stack,
1308
0
        None => return,
1309
    };
1310
1311
417
    unsafe {
1312
417
        *store.0.runtime_limits().stack_limit.get() = prev_stack;
1313
417
    }
1314
417
}
1315
1316
/// A trait implemented for types which can be returned from closures passed to
1317
/// [`Func::wrap`] and friends.
1318
///
1319
/// This trait should not be implemented by user types. This trait may change at
1320
/// any time internally. The types which implement this trait, however, are
1321
/// stable over time.
1322
///
1323
/// For more information see [`Func::wrap`]
1324
pub unsafe trait WasmRet {
1325
    // Same as `WasmTy::Abi`.
1326
    #[doc(hidden)]
1327
    type Abi: Copy;
1328
    #[doc(hidden)]
1329
    type Retptr: Copy;
1330
1331
    // Same as `WasmTy::compatible_with_store`.
1332
    #[doc(hidden)]
1333
    fn compatible_with_store(&self, store: &StoreOpaque) -> bool;
1334
1335
    // Similar to `WasmTy::into_abi_for_arg` but used when host code is
1336
    // returning a value into Wasm, rather than host code passing an argument to
1337
    // a Wasm call. Unlike `into_abi_for_arg`, implementors of this method can
1338
    // raise traps, which means that callers must ensure that
1339
    // `invoke_wasm_and_catch_traps` is on the stack, and therefore this method
1340
    // is unsafe.
1341
    #[doc(hidden)]
1342
    unsafe fn into_abi_for_ret(
1343
        self,
1344
        store: &mut StoreOpaque,
1345
        ptr: Self::Retptr,
1346
    ) -> Result<Self::Abi, Trap>;
1347
1348
    #[doc(hidden)]
1349
    fn func_type(params: impl Iterator<Item = ValType>) -> FuncType;
1350
1351
    #[doc(hidden)]
1352
    unsafe fn wrap_trampoline(ptr: *mut ValRaw, f: impl FnOnce(Self::Retptr) -> Self::Abi);
1353
1354
    // Utilities used to convert an instance of this type to a `Result`
1355
    // explicitly, used when wrapping async functions which always bottom-out
1356
    // in a function that returns a trap because futures can be cancelled.
1357
    #[doc(hidden)]
1358
    type Fallible: WasmRet<Abi = Self::Abi, Retptr = Self::Retptr>;
1359
    #[doc(hidden)]
1360
    fn into_fallible(self) -> Self::Fallible;
1361
    #[doc(hidden)]
1362
    fn fallible_from_trap(trap: Trap) -> Self::Fallible;
1363
}
1364
1365
unsafe impl<T> WasmRet for T
1366
where
1367
    T: WasmTy,
1368
{
1369
    type Abi = <T as WasmTy>::Abi;
1370
    type Retptr = ();
1371
    type Fallible = Result<T, Trap>;
1372
1373
0
    fn compatible_with_store(&self, store: &StoreOpaque) -> bool {
1374
0
        <Self as WasmTy>::compatible_with_store(self, store)
1375
0
    }
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::compatible_with_store
Unexecuted instantiation: <_ as wasmtime::func::WasmRet>::compatible_with_store
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::compatible_with_store
1376
1377
0
    unsafe fn into_abi_for_ret(
1378
0
        self,
1379
0
        store: &mut StoreOpaque,
1380
0
        _retptr: (),
1381
0
    ) -> Result<Self::Abi, Trap> {
1382
0
        Ok(<Self as WasmTy>::into_abi(self, store))
1383
0
    }
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::into_abi_for_ret
Unexecuted instantiation: <_ as wasmtime::func::WasmRet>::into_abi_for_ret
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::into_abi_for_ret
1384
1385
996k
    fn func_type(params: impl Iterator<Item = ValType>) -> FuncType {
1386
996k
        FuncType::new(params, Some(<Self as WasmTy>::valtype()))
1387
996k
    }
<u32 as wasmtime::func::WasmRet>::func_type::<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::option::IntoIter<wasmtime::types::ValType>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>>
Line
Count
Source
1385
71.6k
    fn func_type(params: impl Iterator<Item = ValType>) -> FuncType {
1386
71.6k
        FuncType::new(params, Some(<Self as WasmTy>::valtype()))
1387
71.6k
    }
<u32 as wasmtime::func::WasmRet>::func_type::<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::option::IntoIter<wasmtime::types::ValType>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>>
Line
Count
Source
1385
23.8k
    fn func_type(params: impl Iterator<Item = ValType>) -> FuncType {
1386
23.8k
        FuncType::new(params, Some(<Self as WasmTy>::valtype()))
1387
23.8k
    }
<u32 as wasmtime::func::WasmRet>::func_type::<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::option::IntoIter<wasmtime::types::ValType>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>>
Line
Count
Source
1385
238k
    fn func_type(params: impl Iterator<Item = ValType>) -> FuncType {
1386
238k
        FuncType::new(params, Some(<Self as WasmTy>::valtype()))
1387
238k
    }
<u32 as wasmtime::func::WasmRet>::func_type::<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::option::IntoIter<wasmtime::types::ValType>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>>
Line
Count
Source
1385
23.8k
    fn func_type(params: impl Iterator<Item = ValType>) -> FuncType {
1386
23.8k
        FuncType::new(params, Some(<Self as WasmTy>::valtype()))
1387
23.8k
    }
<u32 as wasmtime::func::WasmRet>::func_type::<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::option::IntoIter<wasmtime::types::ValType>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>>
Line
Count
Source
1385
167k
    fn func_type(params: impl Iterator<Item = ValType>) -> FuncType {
1386
167k
        FuncType::new(params, Some(<Self as WasmTy>::valtype()))
1387
167k
    }
<u32 as wasmtime::func::WasmRet>::func_type::<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::option::IntoIter<wasmtime::types::ValType>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>>
Line
Count
Source
1385
71.6k
    fn func_type(params: impl Iterator<Item = ValType>) -> FuncType {
1386
71.6k
        FuncType::new(params, Some(<Self as WasmTy>::valtype()))
1387
71.6k
    }
<u32 as wasmtime::func::WasmRet>::func_type::<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::option::IntoIter<wasmtime::types::ValType>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>>
Line
Count
Source
1385
191k
    fn func_type(params: impl Iterator<Item = ValType>) -> FuncType {
1386
191k
        FuncType::new(params, Some(<Self as WasmTy>::valtype()))
1387
191k
    }
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::func_type::<core::option::IntoIter<wasmtime::types::ValType>>
<u32 as wasmtime::func::WasmRet>::func_type::<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::option::IntoIter<wasmtime::types::ValType>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>>
Line
Count
Source
1385
23.8k
    fn func_type(params: impl Iterator<Item = ValType>) -> FuncType {
1386
23.8k
        FuncType::new(params, Some(<Self as WasmTy>::valtype()))
1387
23.8k
    }
<u32 as wasmtime::func::WasmRet>::func_type::<core::iter::adapters::chain::Chain<core::option::IntoIter<wasmtime::types::ValType>, core::option::IntoIter<wasmtime::types::ValType>>>
Line
Count
Source
1385
167k
    fn func_type(params: impl Iterator<Item = ValType>) -> FuncType {
1386
167k
        FuncType::new(params, Some(<Self as WasmTy>::valtype()))
1387
167k
    }
Unexecuted instantiation: <_ as wasmtime::func::WasmRet>::func_type::<_>
<u32 as wasmtime::func::WasmRet>::func_type::<core::iter::adapters::chain::Chain<core::option::IntoIter<wasmtime::types::ValType>, core::option::IntoIter<wasmtime::types::ValType>>>
Line
Count
Source
1385
2.91k
    fn func_type(params: impl Iterator<Item = ValType>) -> FuncType {
1386
2.91k
        FuncType::new(params, Some(<Self as WasmTy>::valtype()))
1387
2.91k
    }
<u32 as wasmtime::func::WasmRet>::func_type::<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::option::IntoIter<wasmtime::types::ValType>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>>
Line
Count
Source
1385
1.25k
    fn func_type(params: impl Iterator<Item = ValType>) -> FuncType {
1386
1.25k
        FuncType::new(params, Some(<Self as WasmTy>::valtype()))
1387
1.25k
    }
<u32 as wasmtime::func::WasmRet>::func_type::<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::option::IntoIter<wasmtime::types::ValType>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>>
Line
Count
Source
1385
3.33k
    fn func_type(params: impl Iterator<Item = ValType>) -> FuncType {
1386
3.33k
        FuncType::new(params, Some(<Self as WasmTy>::valtype()))
1387
3.33k
    }
<u32 as wasmtime::func::WasmRet>::func_type::<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::option::IntoIter<wasmtime::types::ValType>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>>
Line
Count
Source
1385
2.91k
    fn func_type(params: impl Iterator<Item = ValType>) -> FuncType {
1386
2.91k
        FuncType::new(params, Some(<Self as WasmTy>::valtype()))
1387
2.91k
    }
<u32 as wasmtime::func::WasmRet>::func_type::<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::option::IntoIter<wasmtime::types::ValType>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>>
Line
Count
Source
1385
417
    fn func_type(params: impl Iterator<Item = ValType>) -> FuncType {
1386
417
        FuncType::new(params, Some(<Self as WasmTy>::valtype()))
1387
417
    }
<u32 as wasmtime::func::WasmRet>::func_type::<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::option::IntoIter<wasmtime::types::ValType>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>>
Line
Count
Source
1385
417
    fn func_type(params: impl Iterator<Item = ValType>) -> FuncType {
1386
417
        FuncType::new(params, Some(<Self as WasmTy>::valtype()))
1387
417
    }
<u32 as wasmtime::func::WasmRet>::func_type::<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::option::IntoIter<wasmtime::types::ValType>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>>
Line
Count
Source
1385
417
    fn func_type(params: impl Iterator<Item = ValType>) -> FuncType {
1386
417
        FuncType::new(params, Some(<Self as WasmTy>::valtype()))
1387
417
    }
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::func_type::<core::option::IntoIter<wasmtime::types::ValType>>
<u32 as wasmtime::func::WasmRet>::func_type::<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::option::IntoIter<wasmtime::types::ValType>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>>
Line
Count
Source
1385
4.17k
    fn func_type(params: impl Iterator<Item = ValType>) -> FuncType {
1386
4.17k
        FuncType::new(params, Some(<Self as WasmTy>::valtype()))
1387
4.17k
    }
<u32 as wasmtime::func::WasmRet>::func_type::<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::option::IntoIter<wasmtime::types::ValType>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>>
Line
Count
Source
1385
1.25k
    fn func_type(params: impl Iterator<Item = ValType>) -> FuncType {
1386
1.25k
        FuncType::new(params, Some(<Self as WasmTy>::valtype()))
1387
1.25k
    }
1388
1389
0
    unsafe fn wrap_trampoline(ptr: *mut ValRaw, f: impl FnOnce(Self::Retptr) -> Self::Abi) {
1390
0
        T::abi_into_raw(f(()), ptr);
1391
0
    }
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u32, i64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u32, u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, i64, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::host_to_wasm_trampoline<u64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, i32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u32, u32, u64, u32, u64, u64, u64, u64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u32, u32, i64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u32, u64, u32, u64, u64, u64, u64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::host_to_wasm_trampoline<i32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::host_to_wasm_trampoline<core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::host_to_wasm_trampoline<u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::host_to_wasm_trampoline<i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<i64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<i64, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::host_to_wasm_trampoline<u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u32, u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, i64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <_ as wasmtime::func::WasmRet>::wrap_trampoline::<_>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u32, u64, u32, u64, u64, u64, u64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u32, u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u32, u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, i64, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::host_to_wasm_trampoline<u64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, i32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, i64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u32, i64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u32, u32, u64, u32, u64, u64, u64, u64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u32, u32, i64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::host_to_wasm_trampoline<core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<i64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::host_to_wasm_trampoline<i32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<i64, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::host_to_wasm_trampoline<u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::host_to_wasm_trampoline<u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::host_to_wasm_trampoline<i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <u32 as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
1392
1393
0
    fn into_fallible(self) -> Result<T, Trap> {
1394
0
        Ok(self)
1395
0
    }
1396
1397
0
    fn fallible_from_trap(trap: Trap) -> Result<T, Trap> {
1398
0
        Err(trap)
1399
0
    }
1400
}
1401
1402
unsafe impl<T> WasmRet for Result<T, Trap>
1403
where
1404
    T: WasmRet,
1405
{
1406
    type Abi = <T as WasmRet>::Abi;
1407
    type Retptr = <T as WasmRet>::Retptr;
1408
    type Fallible = Self;
1409
1410
0
    fn compatible_with_store(&self, store: &StoreOpaque) -> bool {
1411
0
        match self {
1412
0
            Ok(x) => <T as WasmRet>::compatible_with_store(x, store),
1413
0
            Err(_) => true,
1414
        }
1415
0
    }
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::compatible_with_store
Unexecuted instantiation: <core::result::Result<_, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::compatible_with_store
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::compatible_with_store
1416
1417
0
    unsafe fn into_abi_for_ret(
1418
0
        self,
1419
0
        store: &mut StoreOpaque,
1420
0
        retptr: Self::Retptr,
1421
0
    ) -> Result<Self::Abi, Trap> {
1422
0
        self.and_then(|val| val.into_abi_for_ret(store, retptr))
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::into_abi_for_ret::{closure#0}
Unexecuted instantiation: <core::result::Result<_, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::into_abi_for_ret::{closure#0}
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::into_abi_for_ret::{closure#0}
1423
0
    }
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::into_abi_for_ret
Unexecuted instantiation: <core::result::Result<_, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::into_abi_for_ret
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::into_abi_for_ret
1424
1425
996k
    fn func_type(params: impl Iterator<Item = ValType>) -> FuncType {
1426
996k
        T::func_type(params)
1427
996k
    }
<core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::func_type::<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::option::IntoIter<wasmtime::types::ValType>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>>
Line
Count
Source
1425
23.8k
    fn func_type(params: impl Iterator<Item = ValType>) -> FuncType {
1426
23.8k
        T::func_type(params)
1427
23.8k
    }
<core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::func_type::<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::option::IntoIter<wasmtime::types::ValType>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>>
Line
Count
Source
1425
23.8k
    fn func_type(params: impl Iterator<Item = ValType>) -> FuncType {
1426
23.8k
        T::func_type(params)
1427
23.8k
    }
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::func_type::<core::option::IntoIter<wasmtime::types::ValType>>
<core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::func_type::<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::option::IntoIter<wasmtime::types::ValType>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>>
Line
Count
Source
1425
191k
    fn func_type(params: impl Iterator<Item = ValType>) -> FuncType {
1426
191k
        T::func_type(params)
1427
191k
    }
<core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::func_type::<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::option::IntoIter<wasmtime::types::ValType>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>>
Line
Count
Source
1425
71.6k
    fn func_type(params: impl Iterator<Item = ValType>) -> FuncType {
1426
71.6k
        T::func_type(params)
1427
71.6k
    }
<core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::func_type::<core::iter::adapters::chain::Chain<core::option::IntoIter<wasmtime::types::ValType>, core::option::IntoIter<wasmtime::types::ValType>>>
Line
Count
Source
1425
167k
    fn func_type(params: impl Iterator<Item = ValType>) -> FuncType {
1426
167k
        T::func_type(params)
1427
167k
    }
<core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::func_type::<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::option::IntoIter<wasmtime::types::ValType>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>>
Line
Count
Source
1425
167k
    fn func_type(params: impl Iterator<Item = ValType>) -> FuncType {
1426
167k
        T::func_type(params)
1427
167k
    }
<core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::func_type::<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::option::IntoIter<wasmtime::types::ValType>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>>
Line
Count
Source
1425
71.6k
    fn func_type(params: impl Iterator<Item = ValType>) -> FuncType {
1426
71.6k
        T::func_type(params)
1427
71.6k
    }
<core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::func_type::<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::option::IntoIter<wasmtime::types::ValType>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>>
Line
Count
Source
1425
238k
    fn func_type(params: impl Iterator<Item = ValType>) -> FuncType {
1426
238k
        T::func_type(params)
1427
238k
    }
<core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::func_type::<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::option::IntoIter<wasmtime::types::ValType>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>>
Line
Count
Source
1425
23.8k
    fn func_type(params: impl Iterator<Item = ValType>) -> FuncType {
1426
23.8k
        T::func_type(params)
1427
23.8k
    }
Unexecuted instantiation: <core::result::Result<_, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::func_type::<_>
<core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::func_type::<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::option::IntoIter<wasmtime::types::ValType>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>>
Line
Count
Source
1425
417
    fn func_type(params: impl Iterator<Item = ValType>) -> FuncType {
1426
417
        T::func_type(params)
1427
417
    }
<core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::func_type::<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::option::IntoIter<wasmtime::types::ValType>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>>
Line
Count
Source
1425
3.33k
    fn func_type(params: impl Iterator<Item = ValType>) -> FuncType {
1426
3.33k
        T::func_type(params)
1427
3.33k
    }
<core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::func_type::<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::option::IntoIter<wasmtime::types::ValType>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>>
Line
Count
Source
1425
1.25k
    fn func_type(params: impl Iterator<Item = ValType>) -> FuncType {
1426
1.25k
        T::func_type(params)
1427
1.25k
    }
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::func_type::<core::option::IntoIter<wasmtime::types::ValType>>
<core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::func_type::<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::option::IntoIter<wasmtime::types::ValType>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>>
Line
Count
Source
1425
4.17k
    fn func_type(params: impl Iterator<Item = ValType>) -> FuncType {
1426
4.17k
        T::func_type(params)
1427
4.17k
    }
<core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::func_type::<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::option::IntoIter<wasmtime::types::ValType>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>>
Line
Count
Source
1425
417
    fn func_type(params: impl Iterator<Item = ValType>) -> FuncType {
1426
417
        T::func_type(params)
1427
417
    }
<core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::func_type::<core::iter::adapters::chain::Chain<core::option::IntoIter<wasmtime::types::ValType>, core::option::IntoIter<wasmtime::types::ValType>>>
Line
Count
Source
1425
2.91k
    fn func_type(params: impl Iterator<Item = ValType>) -> FuncType {
1426
2.91k
        T::func_type(params)
1427
2.91k
    }
<core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::func_type::<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::option::IntoIter<wasmtime::types::ValType>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>>
Line
Count
Source
1425
1.25k
    fn func_type(params: impl Iterator<Item = ValType>) -> FuncType {
1426
1.25k
        T::func_type(params)
1427
1.25k
    }
<core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::func_type::<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::option::IntoIter<wasmtime::types::ValType>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>>
Line
Count
Source
1425
2.91k
    fn func_type(params: impl Iterator<Item = ValType>) -> FuncType {
1426
2.91k
        T::func_type(params)
1427
2.91k
    }
<core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::func_type::<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::iter::adapters::chain::Chain<core::option::IntoIter<wasmtime::types::ValType>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>, core::option::IntoIter<wasmtime::types::ValType>>>
Line
Count
Source
1425
417
    fn func_type(params: impl Iterator<Item = ValType>) -> FuncType {
1426
417
        T::func_type(params)
1427
417
    }
1428
1429
0
    unsafe fn wrap_trampoline(ptr: *mut ValRaw, f: impl FnOnce(Self::Retptr) -> Self::Abi) {
1430
0
        T::wrap_trampoline(ptr, f)
1431
0
    }
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u32, u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::host_to_wasm_trampoline<u64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u32, u32, i64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::host_to_wasm_trampoline<i32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, i64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u32, u64, u32, u64, u64, u64, u64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<i64, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::host_to_wasm_trampoline<u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::host_to_wasm_trampoline<core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::host_to_wasm_trampoline<i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, i32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, i64, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u32, u32, u64, u32, u64, u64, u64, u64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u32, i64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<i64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::host_to_wasm_trampoline<u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u32, u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<_, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<_>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u32, u32, i64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::host_to_wasm_trampoline<u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<i64, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::host_to_wasm_trampoline<core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u32, u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, i32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, i64, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u32, u32, u64, u32, u64, u64, u64, u64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<i64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::host_to_wasm_trampoline<u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u32, u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::host_to_wasm_trampoline<i32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::host_to_wasm_trampoline<i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u32, u64, u32, u64, u64, u64, u64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, i64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::host_to_wasm_trampoline<u32, u32, i64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::wrap_trampoline::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::host_to_wasm_trampoline<u64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
1432
1433
0
    fn into_fallible(self) -> Result<T, Trap> {
1434
0
        self
1435
0
    }
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::into_fallible
Unexecuted instantiation: <core::result::Result<_, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::into_fallible
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::into_fallible
1436
1437
0
    fn fallible_from_trap(trap: Trap) -> Result<T, Trap> {
1438
0
        Err(trap)
1439
0
    }
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::fallible_from_trap
Unexecuted instantiation: <core::result::Result<_, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::fallible_from_trap
Unexecuted instantiation: <core::result::Result<u32, wasmtime::trap::Trap> as wasmtime::func::WasmRet>::fallible_from_trap
1440
}
1441
1442
macro_rules! impl_wasm_host_results {
1443
    ($n:tt $($t:ident)*) => (
1444
        #[allow(non_snake_case)]
1445
        unsafe impl<$($t),*> WasmRet for ($($t,)*)
1446
        where
1447
            $($t: WasmTy,)*
1448
            ($($t::Abi,)*): HostAbi,
1449
        {
1450
            type Abi = <($($t::Abi,)*) as HostAbi>::Abi;
1451
            type Retptr = <($($t::Abi,)*) as HostAbi>::Retptr;
1452
            type Fallible = Result<Self, Trap>;
1453
1454
            #[inline]
1455
0
            fn compatible_with_store(&self, _store: &StoreOpaque) -> bool {
1456
0
                let ($($t,)*) = self;
1457
0
                $( $t.compatible_with_store(_store) && )* true
1458
0
            }
Unexecuted instantiation: <() as wasmtime::func::WasmRet>::compatible_with_store
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::compatible_with_store
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::compatible_with_store
Unexecuted instantiation: <(_,) as wasmtime::func::WasmRet>::compatible_with_store
Unexecuted instantiation: <(_, _, _, _, _, _) as wasmtime::func::WasmRet>::compatible_with_store
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::compatible_with_store
Unexecuted instantiation: <(_, _, _, _, _) as wasmtime::func::WasmRet>::compatible_with_store
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::compatible_with_store
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::compatible_with_store
Unexecuted instantiation: <(_, _) as wasmtime::func::WasmRet>::compatible_with_store
Unexecuted instantiation: <(_, _, _) as wasmtime::func::WasmRet>::compatible_with_store
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::compatible_with_store
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::compatible_with_store
Unexecuted instantiation: <(_, _, _, _) as wasmtime::func::WasmRet>::compatible_with_store
Unexecuted instantiation: <(_, _, _, _, _, _, _) as wasmtime::func::WasmRet>::compatible_with_store
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::compatible_with_store
Unexecuted instantiation: <(_, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::compatible_with_store
1459
1460
            #[inline]
1461
0
            unsafe fn into_abi_for_ret(self, _store: &mut StoreOpaque, ptr: Self::Retptr) -> Result<Self::Abi, Trap> {
1462
0
                let ($($t,)*) = self;
1463
0
                let abi = ($($t.into_abi(_store),)*);
1464
0
                Ok(<($($t::Abi,)*) as HostAbi>::into_abi(abi, ptr))
1465
0
            }
Unexecuted instantiation: <(_, _) as wasmtime::func::WasmRet>::into_abi_for_ret
Unexecuted instantiation: <(_, _, _, _, _) as wasmtime::func::WasmRet>::into_abi_for_ret
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::into_abi_for_ret
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::into_abi_for_ret
Unexecuted instantiation: <(_, _, _) as wasmtime::func::WasmRet>::into_abi_for_ret
Unexecuted instantiation: <(_, _, _, _, _, _) as wasmtime::func::WasmRet>::into_abi_for_ret
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::into_abi_for_ret
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::into_abi_for_ret
Unexecuted instantiation: <(_, _, _, _, _, _, _) as wasmtime::func::WasmRet>::into_abi_for_ret
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::into_abi_for_ret
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::into_abi_for_ret
Unexecuted instantiation: <() as wasmtime::func::WasmRet>::into_abi_for_ret
Unexecuted instantiation: <(_, _, _, _) as wasmtime::func::WasmRet>::into_abi_for_ret
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::into_abi_for_ret
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::into_abi_for_ret
Unexecuted instantiation: <(_, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::into_abi_for_ret
Unexecuted instantiation: <(_,) as wasmtime::func::WasmRet>::into_abi_for_ret
1466
1467
0
            fn func_type(params: impl Iterator<Item = ValType>) -> FuncType {
1468
0
                FuncType::new(
1469
0
                    params,
1470
0
                    IntoIterator::into_iter([$($t::valtype(),)*]),
1471
0
                )
1472
0
            }
Unexecuted instantiation: <(_, _) as wasmtime::func::WasmRet>::func_type::<_>
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::func_type::<_>
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::func_type::<_>
Unexecuted instantiation: <(_, _, _, _, _, _, _) as wasmtime::func::WasmRet>::func_type::<_>
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::func_type::<_>
Unexecuted instantiation: <(_, _, _, _, _) as wasmtime::func::WasmRet>::func_type::<_>
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::func_type::<_>
Unexecuted instantiation: <(_, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::func_type::<_>
Unexecuted instantiation: <(_, _, _) as wasmtime::func::WasmRet>::func_type::<_>
Unexecuted instantiation: <() as wasmtime::func::WasmRet>::func_type::<_>
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::func_type::<_>
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::func_type::<_>
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::func_type::<_>
Unexecuted instantiation: <(_, _, _, _) as wasmtime::func::WasmRet>::func_type::<_>
Unexecuted instantiation: <(_, _, _, _, _, _) as wasmtime::func::WasmRet>::func_type::<_>
Unexecuted instantiation: <(_,) as wasmtime::func::WasmRet>::func_type::<_>
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::func_type::<_>
1473
1474
            #[allow(unused_assignments)]
1475
0
            unsafe fn wrap_trampoline(mut _ptr: *mut ValRaw, f: impl FnOnce(Self::Retptr) -> Self::Abi) {
1476
0
                let ($($t,)*) = <($($t::Abi,)*) as HostAbi>::call(f);
1477
0
                $(
1478
0
                    $t::abi_into_raw($t, _ptr);
1479
0
                    _ptr = _ptr.add(1);
1480
0
                )*
1481
0
            }
Unexecuted instantiation: <(_, _, _, _, _, _, _) as wasmtime::func::WasmRet>::wrap_trampoline::<_>
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::wrap_trampoline::<_>
Unexecuted instantiation: <(_, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::wrap_trampoline::<_>
Unexecuted instantiation: <() as wasmtime::func::WasmRet>::wrap_trampoline::<_>
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::wrap_trampoline::<_>
Unexecuted instantiation: <(_,) as wasmtime::func::WasmRet>::wrap_trampoline::<_>
Unexecuted instantiation: <(_, _, _, _, _, _) as wasmtime::func::WasmRet>::wrap_trampoline::<_>
Unexecuted instantiation: <(_, _, _, _, _) as wasmtime::func::WasmRet>::wrap_trampoline::<_>
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::wrap_trampoline::<_>
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::wrap_trampoline::<_>
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::wrap_trampoline::<_>
Unexecuted instantiation: <(_, _, _) as wasmtime::func::WasmRet>::wrap_trampoline::<_>
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::wrap_trampoline::<_>
Unexecuted instantiation: <(_, _) as wasmtime::func::WasmRet>::wrap_trampoline::<_>
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::wrap_trampoline::<_>
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::wrap_trampoline::<_>
Unexecuted instantiation: <(_, _, _, _) as wasmtime::func::WasmRet>::wrap_trampoline::<_>
1482
1483
            #[inline]
1484
0
            fn into_fallible(self) -> Result<Self, Trap> {
1485
0
                Ok(self)
1486
0
            }
Unexecuted instantiation: <(_, _, _, _, _, _) as wasmtime::func::WasmRet>::into_fallible
Unexecuted instantiation: <(_,) as wasmtime::func::WasmRet>::into_fallible
Unexecuted instantiation: <(_, _, _, _, _, _, _) as wasmtime::func::WasmRet>::into_fallible
Unexecuted instantiation: <(_, _) as wasmtime::func::WasmRet>::into_fallible
Unexecuted instantiation: <(_, _, _, _, _) as wasmtime::func::WasmRet>::into_fallible
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::into_fallible
Unexecuted instantiation: <() as wasmtime::func::WasmRet>::into_fallible
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::into_fallible
Unexecuted instantiation: <(_, _, _) as wasmtime::func::WasmRet>::into_fallible
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::into_fallible
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::into_fallible
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::into_fallible
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::into_fallible
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::into_fallible
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::into_fallible
Unexecuted instantiation: <(_, _, _, _) as wasmtime::func::WasmRet>::into_fallible
Unexecuted instantiation: <(_, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::into_fallible
1487
1488
            #[inline]
1489
0
            fn fallible_from_trap(trap: Trap) -> Result<Self, Trap> {
1490
0
                Err(trap)
1491
0
            }
Unexecuted instantiation: <(_, _, _) as wasmtime::func::WasmRet>::fallible_from_trap
Unexecuted instantiation: <(_, _, _, _, _, _, _) as wasmtime::func::WasmRet>::fallible_from_trap
Unexecuted instantiation: <() as wasmtime::func::WasmRet>::fallible_from_trap
Unexecuted instantiation: <(_, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::fallible_from_trap
Unexecuted instantiation: <(_,) as wasmtime::func::WasmRet>::fallible_from_trap
Unexecuted instantiation: <(_, _, _, _, _, _) as wasmtime::func::WasmRet>::fallible_from_trap
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::fallible_from_trap
Unexecuted instantiation: <(_, _, _, _, _) as wasmtime::func::WasmRet>::fallible_from_trap
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::fallible_from_trap
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::fallible_from_trap
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::fallible_from_trap
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::fallible_from_trap
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::fallible_from_trap
Unexecuted instantiation: <(_, _) as wasmtime::func::WasmRet>::fallible_from_trap
Unexecuted instantiation: <(_, _, _, _) as wasmtime::func::WasmRet>::fallible_from_trap
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::fallible_from_trap
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _, _, _, _) as wasmtime::func::WasmRet>::fallible_from_trap
1492
        }
1493
    )
1494
}
1495
1496
for_each_function_signature!(impl_wasm_host_results);
1497
1498
// Internal trait representing how to communicate tuples of return values across
1499
// an ABI boundary. This internally corresponds to the "wasmtime" ABI inside of
1500
// cranelift itself. Notably the first element of each tuple is returned via the
1501
// typical system ABI (e.g. systemv or fastcall depending on platform) and all
1502
// other values are returned packed via the stack.
1503
//
1504
// This trait helps to encapsulate all the details of that.
1505
#[doc(hidden)]
1506
pub trait HostAbi {
1507
    // A value returned from native functions which return `Self`
1508
    type Abi: Copy;
1509
    // A return pointer, added to the end of the argument list, for native
1510
    // functions that return `Self`. Note that a 0-sized type here should get
1511
    // elided at the ABI level.
1512
    type Retptr: Copy;
1513
1514
    // Converts a value of `self` into its components. Stores necessary values
1515
    // into `ptr` and then returns whatever needs to be returned from the
1516
    // function.
1517
    unsafe fn into_abi(self, ptr: Self::Retptr) -> Self::Abi;
1518
1519
    // Calls `f` with a suitably sized return area and requires `f` to return
1520
    // the raw abi value of the first element of our tuple. This will then
1521
    // unpack the `Retptr` and assemble it with `Self::Abi` to return an
1522
    // instance of the whole tuple.
1523
    unsafe fn call(f: impl FnOnce(Self::Retptr) -> Self::Abi) -> Self;
1524
}
1525
1526
macro_rules! impl_host_abi {
1527
    // Base case, everything is `()`
1528
    (0) => {
1529
        impl HostAbi for () {
1530
            type Abi = ();
1531
            type Retptr = ();
1532
1533
            #[inline]
1534
0
            unsafe fn into_abi(self, _ptr: Self::Retptr) -> Self::Abi {}
1535
1536
            #[inline]
1537
0
            unsafe fn call(f: impl FnOnce(Self::Retptr) -> Self::Abi) -> Self {
1538
0
                f(())
1539
0
            }
1540
        }
1541
    };
1542
1543
    // In the 1-case the retptr is not present, so it's a 0-sized value.
1544
    (1 $a:ident) => {
1545
        impl<$a: Copy> HostAbi for ($a,) {
1546
            type Abi = $a;
1547
            type Retptr = ();
1548
1549
0
            unsafe fn into_abi(self, _ptr: Self::Retptr) -> Self::Abi {
1550
0
                self.0
1551
0
            }
1552
1553
24.2k
            unsafe fn call(f: impl FnOnce(Self::Retptr) -> Self::Abi) -> Self {
1554
24.2k
                (f(()),)
1555
24.2k
            }
<(u32,) as wasmtime::func::HostAbi>::call::<<(u32,) as wasmtime::func::typed::WasmParams>::invoke<u32>::{closure#0}>
Line
Count
Source
1553
23.8k
            unsafe fn call(f: impl FnOnce(Self::Retptr) -> Self::Abi) -> Self {
1554
23.8k
                (f(()),)
1555
23.8k
            }
Unexecuted instantiation: <(_,) as wasmtime::func::HostAbi>::call::<_>
<(u32,) as wasmtime::func::HostAbi>::call::<<(u32,) as wasmtime::func::typed::WasmParams>::invoke<u32>::{closure#0}>
Line
Count
Source
1553
417
            unsafe fn call(f: impl FnOnce(Self::Retptr) -> Self::Abi) -> Self {
1554
417
                (f(()),)
1555
417
            }
1556
        }
1557
    };
1558
1559
    // This is where the more interesting case happens. The first element of the
1560
    // tuple is returned via `Abi` and all other elements are returned via
1561
    // `Retptr`. We create a `TupleRetNN` structure to represent all of the
1562
    // return values here.
1563
    //
1564
    // Also note that this isn't implemented for the old backend right now due
1565
    // to the original author not really being sure how to implement this in the
1566
    // old backend.
1567
    ($n:tt $t:ident $($u:ident)*) => {paste::paste!{
1568
        #[doc(hidden)]
1569
        #[allow(non_snake_case)]
1570
        #[repr(C)]
1571
        pub struct [<TupleRet $n>]<$($u,)*> {
1572
            $($u: $u,)*
1573
        }
1574
1575
        #[allow(non_snake_case, unused_assignments)]
1576
        impl<$t: Copy, $($u: Copy,)*> HostAbi for ($t, $($u,)*) {
1577
            type Abi = $t;
1578
            type Retptr = *mut [<TupleRet $n>]<$($u,)*>;
1579
1580
0
            unsafe fn into_abi(self, ptr: Self::Retptr) -> Self::Abi {
1581
0
                let ($t, $($u,)*) = self;
1582
0
                // Store the tail of our tuple into the return pointer...
1583
0
                $((*ptr).$u = $u;)*
1584
0
                // ... and return the head raw.
1585
0
                $t
1586
0
            }
Unexecuted instantiation: <(_, _, _, _, _) as wasmtime::func::HostAbi>::into_abi
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _) as wasmtime::func::HostAbi>::into_abi
Unexecuted instantiation: <(_, _, _, _, _, _, _, _) as wasmtime::func::HostAbi>::into_abi
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _, _, _, _, _) as wasmtime::func::HostAbi>::into_abi
Unexecuted instantiation: <(_, _, _, _, _, _) as wasmtime::func::HostAbi>::into_abi
Unexecuted instantiation: <(_, _, _, _) as wasmtime::func::HostAbi>::into_abi
Unexecuted instantiation: <(_, _, _, _, _, _, _) as wasmtime::func::HostAbi>::into_abi
Unexecuted instantiation: <(_, _) as wasmtime::func::HostAbi>::into_abi
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _) as wasmtime::func::HostAbi>::into_abi
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _, _, _, _) as wasmtime::func::HostAbi>::into_abi
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _, _) as wasmtime::func::HostAbi>::into_abi
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _) as wasmtime::func::HostAbi>::into_abi
Unexecuted instantiation: <(_, _, _) as wasmtime::func::HostAbi>::into_abi
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _, _, _) as wasmtime::func::HostAbi>::into_abi
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _) as wasmtime::func::HostAbi>::into_abi
1587
1588
0
            unsafe fn call(f: impl FnOnce(Self::Retptr) -> Self::Abi) -> Self {
1589
0
                // Create space to store all the return values and then invoke
1590
0
                // the function.
1591
0
                let mut space = std::mem::MaybeUninit::uninit();
1592
0
                let t = f(space.as_mut_ptr());
1593
0
                let space = space.assume_init();
1594
0
1595
0
                // Use the return value as the head of the tuple and unpack our
1596
0
                // return area to get the rest of the tuple.
1597
0
                (t, $(space.$u,)*)
1598
0
            }
Unexecuted instantiation: <(_, _, _) as wasmtime::func::HostAbi>::call::<_>
Unexecuted instantiation: <(_, _, _, _, _, _, _) as wasmtime::func::HostAbi>::call::<_>
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _) as wasmtime::func::HostAbi>::call::<_>
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _, _, _, _, _, _) as wasmtime::func::HostAbi>::call::<_>
Unexecuted instantiation: <(_, _, _, _) as wasmtime::func::HostAbi>::call::<_>
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _, _) as wasmtime::func::HostAbi>::call::<_>
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _) as wasmtime::func::HostAbi>::call::<_>
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _, _, _, _, _) as wasmtime::func::HostAbi>::call::<_>
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _, _, _, _) as wasmtime::func::HostAbi>::call::<_>
Unexecuted instantiation: <(_, _, _, _, _, _, _, _) as wasmtime::func::HostAbi>::call::<_>
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _) as wasmtime::func::HostAbi>::call::<_>
Unexecuted instantiation: <(_, _) as wasmtime::func::HostAbi>::call::<_>
Unexecuted instantiation: <(_, _, _, _, _, _, _, _, _, _, _, _) as wasmtime::func::HostAbi>::call::<_>
Unexecuted instantiation: <(_, _, _, _, _) as wasmtime::func::HostAbi>::call::<_>
Unexecuted instantiation: <(_, _, _, _, _, _) as wasmtime::func::HostAbi>::call::<_>
1599
        }
1600
    }};
1601
}
1602
1603
for_each_function_signature!(impl_host_abi);
1604
1605
/// Internal trait implemented for all arguments that can be passed to
1606
/// [`Func::wrap`] and [`Linker::func_wrap`](crate::Linker::func_wrap).
1607
///
1608
/// This trait should not be implemented by external users, it's only intended
1609
/// as an implementation detail of this crate.
1610
pub trait IntoFunc<T, Params, Results>: Send + Sync + 'static {
1611
    #[doc(hidden)]
1612
    fn into_func(
1613
        self,
1614
        engine: &Engine,
1615
    ) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline);
1616
}
1617
1618
/// A structure representing the caller's context when creating a function
1619
/// via [`Func::wrap`].
1620
///
1621
/// This structure can be taken as the first parameter of a closure passed to
1622
/// [`Func::wrap`] or other constructors, and serves two purposes:
1623
///
1624
/// * First consumers can use [`Caller<'_, T>`](crate::Caller) to get access to
1625
///   [`StoreContextMut<'_, T>`](crate::StoreContextMut) and/or get access to
1626
///   `T` itself. This means that the [`Caller`] type can serve as a proxy to
1627
///   the original [`Store`](crate::Store) itself and is used to satisfy
1628
///   [`AsContext`] and [`AsContextMut`] bounds.
1629
///
1630
/// * Second a [`Caller`] can be used as the name implies, learning about the
1631
///   caller's context, namely it's exported memory and exported functions. This
1632
///   allows functions which take pointers as arguments to easily read the
1633
///   memory the pointers point into, or if a function is expected to call
1634
///   malloc in the wasm module to reserve space for the output you can do that.
1635
///
1636
/// Host functions which want access to [`Store`](crate::Store)-level state are
1637
/// recommended to use this type.
1638
pub struct Caller<'a, T> {
1639
    pub(crate) store: StoreContextMut<'a, T>,
1640
    caller: &'a InstanceHandle,
1641
}
1642
1643
impl<T> Caller<'_, T> {
1644
0
    unsafe fn with<R>(caller: *mut VMContext, f: impl FnOnce(Caller<'_, T>) -> R) -> R {
1645
0
        assert!(!caller.is_null());
1646
0
        let instance = InstanceHandle::from_vmctx(caller);
1647
0
        let store = StoreContextMut::from_raw(instance.store());
1648
0
        f(Caller {
1649
0
            store,
1650
0
            caller: &instance,
1651
0
        })
1652
0
    }
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, i64, u32, u32), core::result::Result<[u8; 32], fvm::kernel::error::ExecutionError>, fvm::syscalls::rand::get_beacon_randomness<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, i64, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, i64, u32, u32), core::result::Result<[u8; 32], fvm::kernel::error::ExecutionError>, fvm::syscalls::rand::get_chain_randomness<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, i64, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<fvm_shared::sys::out::ipld::IpldStat, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_stat<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::set_root<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::enabled<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u64, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_link<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_create<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::hash<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::out::network::NetworkContext, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::context<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<[u8; 65], fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::recover_secp_public_key<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::enabled<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64,), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::balance_of<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64,), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::balance_of<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::store_artifact<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_actor_code_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_read<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::out::vm::MessageContext, fvm::kernel::error::ExecutionError>, fvm::syscalls::vm::message_context<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::out::vm::MessageContext, fvm::kernel::error::ExecutionError>, fvm::syscalls::vm::message_context<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_actor_code_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::next_actor_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::event::emit_event<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::hash<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_post<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_code_cid_for_type<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, i32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<fvm_shared::sys::out::ipld::IpldStat, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_stat<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::tipset_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_code_cid_for_type<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, i32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u64, u32, u64, u64, u64, u64), core::result::Result<fvm_shared::sys::out::send::Send, fvm::kernel::error::ExecutionError>, fvm::syscalls::send::send<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u64, u32, u64, u64, u64, u64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<fvm::syscalls::vm::Never, fvm::syscalls::error::Abort>, fvm::syscalls::vm::exit<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::log<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, i64, u32, u32), core::result::Result<[u8; 32], fvm::kernel::error::ExecutionError>, fvm::syscalls::rand::get_beacon_randomness<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, i64, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::event::emit_event<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32, u32, u32), core::result::Result<fvm_shared::sys::out::crypto::VerifyConsensusFault, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_consensus_fault<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<u64, fvm::kernel::error::ExecutionError>, fvm::syscalls::gas::available<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::total_fil_circ_supply<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::lookup_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32, u32, u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_signature<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_aggregate_seals<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_builtin_actor_type<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::batch_verify_seals<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<fvm::syscalls::vm::Never, fvm::syscalls::error::Abort>, fvm::syscalls::vm::exit<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32, u32, u32), core::result::Result<fvm_shared::sys::out::crypto::VerifyConsensusFault, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_consensus_fault<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::self_destruct<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::self_destruct<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_seal<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::total_fil_circ_supply<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, u32, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::compute_unsealed_sector_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, i64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_create<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::current_balance<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u64, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_link<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::root<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, i64, u32, u32), core::result::Result<[u8; 32], fvm::kernel::error::ExecutionError>, fvm::syscalls::rand::get_chain_randomness<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, i64, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_post<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<u64, fvm::kernel::error::ExecutionError>, fvm::syscalls::gas::available<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::lookup_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_aggregate_seals<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, u32, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::compute_unsealed_sector_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, i64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::next_actor_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, i64), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::gas::charge_gas<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, i64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::store_artifact<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_replica_update<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<fvm_shared::sys::out::ipld::IpldOpen, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_open<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::set_root<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_replica_update<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u64, u32, u64, u64, u64, u64), core::result::Result<fvm_shared::sys::out::send::Send, fvm::kernel::error::ExecutionError>, fvm::syscalls::send::send<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u64, u32, u64, u64, u64, u64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::current_balance<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_seal<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::root<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u64, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::resolve_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::create_actor<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::create_actor<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<fvm_shared::sys::out::ipld::IpldOpen, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_open<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::out::network::NetworkContext, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::context<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u64, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::resolve_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_read<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, i64), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::gas::charge_gas<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, i64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32, u32, u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_signature<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::log<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<[u8; 65], fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::recover_secp_public_key<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::tipset_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_builtin_actor_type<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::batch_verify_seals<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<_>>::with::<_, _>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_seal<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::batch_verify_seals<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u64, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::resolve_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u64, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_link<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::total_fil_circ_supply<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::hash<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::out::network::NetworkContext, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::context<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u64, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::resolve_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_read<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<fvm::syscalls::vm::Never, fvm::syscalls::error::Abort>, fvm::syscalls::vm::exit<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32, u32, u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_signature<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::store_artifact<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::root<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::lookup_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_actor_code_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_read<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<[u8; 65], fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::recover_secp_public_key<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_actor_code_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::store_artifact<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<fvm::syscalls::vm::Never, fvm::syscalls::error::Abort>, fvm::syscalls::vm::exit<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, i64, u32, u32), core::result::Result<[u8; 32], fvm::kernel::error::ExecutionError>, fvm::syscalls::rand::get_chain_randomness<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, i64, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::log<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, i64, u32, u32), core::result::Result<[u8; 32], fvm::kernel::error::ExecutionError>, fvm::syscalls::rand::get_beacon_randomness<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, i64, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::set_root<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::enabled<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_aggregate_seals<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::create_actor<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::create_actor<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_builtin_actor_type<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_create<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<fvm_shared::sys::out::ipld::IpldOpen, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_open<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::self_destruct<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::out::network::NetworkContext, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::context<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::enabled<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64,), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::balance_of<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, i64), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::gas::charge_gas<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, i64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::log<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::out::vm::MessageContext, fvm::kernel::error::ExecutionError>, fvm::syscalls::vm::message_context<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::next_actor_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_post<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<u64, fvm::kernel::error::ExecutionError>, fvm::syscalls::gas::available<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::event::emit_event<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::batch_verify_seals<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_post<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_code_cid_for_type<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, i32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<fvm_shared::sys::out::ipld::IpldStat, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_stat<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, u32, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::compute_unsealed_sector_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, i64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::tipset_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, i64, u32, u32), core::result::Result<[u8; 32], fvm::kernel::error::ExecutionError>, fvm::syscalls::rand::get_beacon_randomness<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, i64, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u64, u32, u64, u64, u64, u64), core::result::Result<fvm_shared::sys::out::send::Send, fvm::kernel::error::ExecutionError>, fvm::syscalls::send::send<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u64, u32, u64, u64, u64, u64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_replica_update<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::event::emit_event<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32, u32, u32), core::result::Result<fvm_shared::sys::out::crypto::VerifyConsensusFault, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_consensus_fault<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<fvm_shared::sys::out::ipld::IpldStat, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_stat<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<u64, fvm::kernel::error::ExecutionError>, fvm::syscalls::gas::available<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::total_fil_circ_supply<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::current_balance<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::root<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32, u32, u32), core::result::Result<fvm_shared::sys::out::crypto::VerifyConsensusFault, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_consensus_fault<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::self_destruct<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_seal<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<[u8; 65], fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::recover_secp_public_key<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, u32, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::compute_unsealed_sector_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, i64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_create<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64,), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::balance_of<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::current_balance<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u64, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_link<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::out::vm::MessageContext, fvm::kernel::error::ExecutionError>, fvm::syscalls::vm::message_context<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, i64, u32, u32), core::result::Result<[u8; 32], fvm::kernel::error::ExecutionError>, fvm::syscalls::rand::get_chain_randomness<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, i64, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::hash<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_aggregate_seals<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::next_actor_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_code_cid_for_type<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, i32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, i64), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::gas::charge_gas<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, i64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::tipset_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_builtin_actor_type<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<fvm_shared::sys::out::ipld::IpldOpen, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_open<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::set_root<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_replica_update<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::lookup_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32, u32, u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_signature<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::with::<<_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::CallResult<u32>, <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u64, u32, u64, u64, u64, u64), core::result::Result<fvm_shared::sys::out::send::Send, fvm::kernel::error::ExecutionError>, fvm::syscalls::send::send<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u64, u32, u64, u64, u64, u64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}>
1653
1654
0
    fn sub_caller(&mut self) -> Caller<'_, T> {
1655
0
        Caller {
1656
0
            store: self.store.as_context_mut(),
1657
0
            caller: self.caller,
1658
0
        }
1659
0
    }
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::sub_caller
Unexecuted instantiation: <wasmtime::func::Caller<_>>::sub_caller
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::sub_caller
1660
1661
    /// Looks up an export from the caller's module by the `name` given.
1662
    ///
1663
    /// Note that when accessing and calling exported functions, one should
1664
    /// adhere to the guidelines of the interface types proposal.  This method
1665
    /// is a temporary mechanism for accessing the caller's information until
1666
    /// interface types has been fully standardized and implemented. The
1667
    /// interface types proposal will obsolete this type and this will be
1668
    /// removed in the future at some point after interface types is
1669
    /// implemented. If you're relying on this method type it's recommended to
1670
    /// become familiar with interface types to ensure that your use case is
1671
    /// covered by the proposal.
1672
    ///
1673
    /// # Return
1674
    ///
1675
    /// If a memory or function export with the `name` provided was found, then it is
1676
    /// returned as a `Memory`. There are a number of situations, however, where
1677
    /// the memory or function may not be available:
1678
    ///
1679
    /// * The caller instance may not have an export named `name`
1680
    /// * The export named `name` may not be an exported memory
1681
    /// * There may not be a caller available, for example if `Func` was called
1682
    ///   directly from host code.
1683
    ///
1684
    /// It's recommended to take care when calling this API and gracefully
1685
    /// handling a `None` return value.
1686
0
    pub fn get_export(&mut self, name: &str) -> Option<Extern> {
1687
0
        // All instances created have a `host_state` with a pointer pointing
1688
0
        // back to themselves. If this caller doesn't have that `host_state`
1689
0
        // then it probably means it was a host-created object like `Func::new`
1690
0
        // which doesn't have any exports we want to return anyway.
1691
0
        self.caller
1692
0
            .host_state()
1693
0
            .downcast_ref::<Instance>()?
1694
0
            .get_export(&mut self.store, name)
1695
0
    }
1696
1697
    /// Access the underlying data owned by this `Store`.
1698
    ///
1699
    /// Same as [`Store::data`](crate::Store::data)
1700
0
    pub fn data(&self) -> &T {
1701
0
        self.store.data()
1702
0
    }
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::data
Unexecuted instantiation: <wasmtime::func::Caller<_>>::data
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::data
1703
1704
    /// Access the underlying data owned by this `Store`.
1705
    ///
1706
    /// Same as [`Store::data_mut`](crate::Store::data_mut)
1707
0
    pub fn data_mut(&mut self) -> &mut T {
1708
0
        self.store.data_mut()
1709
0
    }
1710
1711
    /// Returns the underlying [`Engine`] this store is connected to.
1712
0
    pub fn engine(&self) -> &Engine {
1713
0
        self.store.engine()
1714
0
    }
1715
1716
    /// Perform garbage collection of `ExternRef`s.
1717
    ///
1718
    /// Same as [`Store::gc`](crate::Store::gc).
1719
0
    pub fn gc(&mut self) {
1720
0
        self.store.gc()
1721
0
    }
1722
1723
    /// Returns the fuel consumed by this store.
1724
    ///
1725
    /// For more information see [`Store::fuel_consumed`](crate::Store::fuel_consumed)
1726
0
    pub fn fuel_consumed(&self) -> Option<u64> {
1727
0
        self.store.fuel_consumed()
1728
0
    }
1729
1730
    /// Inject more fuel into this store to be consumed when executing wasm code.
1731
    ///
1732
    /// For more information see [`Store::add_fuel`](crate::Store::add_fuel)
1733
0
    pub fn add_fuel(&mut self, fuel: u64) -> Result<()> {
1734
0
        self.store.add_fuel(fuel)
1735
0
    }
1736
1737
    /// Synthetically consumes fuel from the store.
1738
    ///
1739
    /// For more information see [`Store::consume_fuel`](crate::Store::consume_fuel)
1740
0
    pub fn consume_fuel(&mut self, fuel: u64) -> Result<u64> {
1741
0
        self.store.consume_fuel(fuel)
1742
0
    }
1743
1744
    /// Configures this `Store` to trap whenever fuel runs out.
1745
    ///
1746
    /// For more information see
1747
    /// [`Store::out_of_fuel_trap`](crate::Store::out_of_fuel_trap)
1748
0
    pub fn out_of_fuel_trap(&mut self) {
1749
0
        self.store.out_of_fuel_trap()
1750
0
    }
1751
1752
    /// Configures this `Store` to yield while executing futures whenever fuel
1753
    /// runs out.
1754
    ///
1755
    /// For more information see
1756
    /// [`Store::out_of_fuel_async_yield`](crate::Store::out_of_fuel_async_yield)
1757
0
    pub fn out_of_fuel_async_yield(&mut self, injection_count: u64, fuel_to_inject: u64) {
1758
0
        self.store
1759
0
            .out_of_fuel_async_yield(injection_count, fuel_to_inject)
1760
0
    }
1761
}
1762
1763
impl<T> AsContext for Caller<'_, T> {
1764
    type Data = T;
1765
0
    fn as_context(&self) -> StoreContext<'_, T> {
1766
0
        self.store.as_context()
1767
0
    }
1768
}
1769
1770
impl<T> AsContextMut for Caller<'_, T> {
1771
0
    fn as_context_mut(&mut self) -> StoreContextMut<'_, T> {
1772
0
        self.store.as_context_mut()
1773
0
    }
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as wasmtime::store::context::AsContextMut>::as_context_mut
Unexecuted instantiation: <wasmtime::func::Caller<_> as wasmtime::store::context::AsContextMut>::as_context_mut
Unexecuted instantiation: <wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as wasmtime::store::context::AsContextMut>::as_context_mut
1774
}
1775
1776
macro_rules! impl_into_func {
1777
    ($num:tt $($args:ident)*) => {
1778
        // Implement for functions without a leading `&Caller` parameter,
1779
        // delegating to the implementation below which does have the leading
1780
        // `Caller` parameter.
1781
        #[allow(non_snake_case)]
1782
        impl<T, F, $($args,)* R> IntoFunc<T, ($($args,)*), R> for F
1783
        where
1784
            F: Fn($($args),*) -> R + Send + Sync + 'static,
1785
            $($args: WasmTy,)*
1786
            R: WasmRet,
1787
        {
1788
0
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1789
0
                let f = move |_: Caller<'_, T>, $($args:$args),*| {
1790
                    self($($args),*)
1791
                };
1792
1793
0
                f.into_func(engine)
1794
0
            }
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (_, _, _, _, _, _, _, _), _>>::into_func
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (), _>>::into_func
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (_, _, _, _, _, _, _, _, _, _, _, _), _>>::into_func
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (_, _, _, _, _, _, _, _, _, _, _), _>>::into_func
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (_, _, _, _, _, _, _, _, _, _), _>>::into_func
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (_, _, _, _), _>>::into_func
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (_,), _>>::into_func
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _), _>>::into_func
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (_, _, _, _, _, _, _, _, _), _>>::into_func
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (_, _, _, _, _, _), _>>::into_func
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (_, _, _, _, _, _, _, _, _, _, _, _, _, _), _>>::into_func
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (_, _, _, _, _), _>>::into_func
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (_, _, _, _, _, _, _, _, _, _, _, _, _, _, _), _>>::into_func
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (_, _, _, _, _, _, _), _>>::into_func
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (_, _, _, _, _, _, _, _, _, _, _, _, _), _>>::into_func
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (_, _, _), _>>::into_func
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (_, _), _>>::into_func
1795
        }
1796
1797
        #[allow(non_snake_case)]
1798
        impl<T, F, $($args,)* R> IntoFunc<T, (Caller<'_, T>, $($args,)*), R> for F
1799
        where
1800
            F: Fn(Caller<'_, T>, $($args),*) -> R + Send + Sync + 'static,
1801
            $($args: WasmTy,)*
1802
            R: WasmRet,
1803
        {
1804
996k
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
996k
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
996k
                /// calls the wrapped host function, and returns the translated
1807
996k
                /// result back to Wasm.
1808
996k
                ///
1809
996k
                /// Note that this shim's ABI must *exactly* match that expected
1810
996k
                /// by Cranelift, since Cranelift is generating raw function
1811
996k
                /// calls directly to this function.
1812
996k
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
0
                    vmctx: *mut VMOpaqueContext,
1814
0
                    caller_vmctx: *mut VMContext,
1815
0
                    $( $args: $args::Abi, )*
1816
0
                    retptr: R::Retptr,
1817
0
                ) -> R::Abi
1818
0
                where
1819
0
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
0
                    $( $args: WasmTy, )*
1821
0
                    R: WasmRet,
1822
0
                {
1823
0
                    enum CallResult<U> {
1824
0
                        Ok(U),
1825
0
                        Trap(anyhow::Error),
1826
0
                        Panic(Box<dyn std::any::Any + Send>),
1827
0
                    }
1828
0
1829
0
                    // Note that this `result` is intentionally scoped into a
1830
0
                    // separate block. Handling traps and panics will involve
1831
0
                    // longjmp-ing from this function which means we won't run
1832
0
                    // destructors. As a result anything requiring a destructor
1833
0
                    // should be part of this block, and the long-jmp-ing
1834
0
                    // happens after the block in handling `CallResult`.
1835
0
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
996k
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
996k
                        let state = (*vmctx).host_state();
1838
996k
1839
996k
                        // Double-check ourselves in debug mode, but we control
1840
996k
                        // the `Any` here so an unsafe downcast should also
1841
996k
                        // work.
1842
996k
                        debug_assert!(state.is::<F>());
1843
996k
                        let func = &*(state as *const _ as *const F);
1844
996k
1845
996k
                        let ret = {
1846
996k
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
996k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
996k
                                    return R::fallible_from_trap(trap);
1849
996k
                                }
1850
996k
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
996k
                                let r = func(
1852
996k
                                    caller.sub_caller(),
1853
996k
                                    $( $args, )*
1854
996k
                                );
1855
996k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
996k
                                    return R::fallible_from_trap(trap);
1857
996k
                                }
1858
996k
                                r.into_fallible()
1859
996k
                            }))
1860
996k
                        };
1861
996k
1862
996k
                        // Note that we need to be careful when dealing with traps
1863
996k
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
996k
                        // that it's not unwinding and consequently no Rust
1865
996k
                        // destructors are run. We need to be careful to ensure that
1866
996k
                        // nothing on the stack needs a destructor when we exit
1867
996k
                        // abnormally from this `match`, e.g. on `Err`, on
1868
996k
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
996k
                        match ret {
1870
996k
                            Err(panic) => CallResult::Panic(panic),
1871
996k
                            Ok(ret) => {
1872
996k
                                // Because the wrapped function is not `unsafe`, we
1873
996k
                                // can't assume it returned a value that is
1874
996k
                                // compatible with this store.
1875
996k
                                if !ret.compatible_with_store(caller.store.0) {
1876
996k
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
996k
                                } else {
1878
996k
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
996k
                                        Ok(val) => CallResult::Ok(val),
1880
996k
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
996k
                                    }
1882
996k
                                }
1883
996k
1884
996k
                            }
1885
996k
                        }
1886
996k
                    });
1887
0
1888
0
                    match result {
1889
996k
                        CallResult::Ok(val) => val,
1890
996k
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
996k
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
996k
                    }
1893
996k
                }
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::create_actor<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::out::network::NetworkContext, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::context<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, i64, u32, u32), core::result::Result<[u8; 32], fvm::kernel::error::ExecutionError>, fvm::syscalls::rand::get_chain_randomness<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, i64, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::self_destruct<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_post<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, i64, u32, u32), core::result::Result<[u8; 32], fvm::kernel::error::ExecutionError>, fvm::syscalls::rand::get_beacon_randomness<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, i64, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u64, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::resolve_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<u64, fvm::kernel::error::ExecutionError>, fvm::syscalls::gas::available<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::out::network::NetworkContext, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::context<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::total_fil_circ_supply<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_replica_update<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::enabled<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::lookup_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_create<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::current_balance<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, i64), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::gas::charge_gas<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, i64, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::store_artifact<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::tipset_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::lookup_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::set_root<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<[u8; 65], fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::recover_secp_public_key<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<fvm_shared::sys::out::ipld::IpldStat, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_stat<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_seal<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::root<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, u32, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::compute_unsealed_sector_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, i64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::event::emit_event<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u64, u32, u64, u64, u64, u64), core::result::Result<fvm_shared::sys::out::send::Send, fvm::kernel::error::ExecutionError>, fvm::syscalls::send::send<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u64, u32, u64, u64, u64, u64, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::next_actor_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<u64, fvm::kernel::error::ExecutionError>, fvm::syscalls::gas::available<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_read<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::set_root<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, i64, u32, u32), core::result::Result<[u8; 32], fvm::kernel::error::ExecutionError>, fvm::syscalls::rand::get_chain_randomness<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, i64, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::hash<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_create<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_post<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::root<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_code_cid_for_type<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, i32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::total_fil_circ_supply<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::self_destruct<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u64, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_link<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::next_actor_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::hash<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_replica_update<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_aggregate_seals<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::enabled<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64,), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::balance_of<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u64, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::log<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::out::vm::MessageContext, fvm::kernel::error::ExecutionError>, fvm::syscalls::vm::message_context<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_aggregate_seals<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32, u32, u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_signature<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, u32, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::compute_unsealed_sector_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, i64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::create_actor<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<fvm_shared::sys::out::ipld::IpldStat, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_stat<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::store_artifact<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_builtin_actor_type<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u64, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::resolve_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::batch_verify_seals<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_builtin_actor_type<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::event::emit_event<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64,), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::balance_of<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u64, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32, u32, u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_signature<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u64, u32, u64, u64, u64, u64), core::result::Result<fvm_shared::sys::out::send::Send, fvm::kernel::error::ExecutionError>, fvm::syscalls::send::send<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u64, u32, u64, u64, u64, u64, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::out::vm::MessageContext, fvm::kernel::error::ExecutionError>, fvm::syscalls::vm::message_context<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<fvm_shared::sys::out::ipld::IpldOpen, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_open<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32, u32, u32), core::result::Result<fvm_shared::sys::out::crypto::VerifyConsensusFault, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_consensus_fault<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<fvm::syscalls::vm::Never, fvm::syscalls::error::Abort>, fvm::syscalls::vm::exit<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, i64, u32, u32), core::result::Result<[u8; 32], fvm::kernel::error::ExecutionError>, fvm::syscalls::rand::get_beacon_randomness<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, i64, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::tipset_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::current_balance<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_actor_code_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_code_cid_for_type<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, i32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32, u32, u32), core::result::Result<fvm_shared::sys::out::crypto::VerifyConsensusFault, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_consensus_fault<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, i64), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::gas::charge_gas<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, i64, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<fvm_shared::sys::out::ipld::IpldOpen, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_open<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<[u8; 65], fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::recover_secp_public_key<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::batch_verify_seals<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_read<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<fvm::syscalls::vm::Never, fvm::syscalls::error::Abort>, fvm::syscalls::vm::exit<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_actor_code_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u64, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_link<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_seal<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::log<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<_, _, _, _, _, _, _, _, _, _, _, _, _>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<_, _, _, _, _, _, _, _, _, _>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<_, _, _, _, _, _>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<_, _, _, _, _, _, _, _, _, _, _>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<_, _, _, _, _, _, _>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::<_, _, _>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<_, _, _, _, _>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<_, _, _, _, _, _, _, _, _>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<_, _, _, _, _, _, _, _, _, _, _, _, _, _>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<_, _, _, _, _, _, _, _, _, _, _, _>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<_, _, _, _, _, _, _, _, _, _, _, _, _, _, _>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<_, _, _, _>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<_, _, _, _, _, _, _, _>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32, u32, u32), core::result::Result<fvm_shared::sys::out::crypto::VerifyConsensusFault, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_consensus_fault<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::batch_verify_seals<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::enabled<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::store_artifact<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<fvm_shared::sys::out::ipld::IpldOpen, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_open<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32, u32, u32), core::result::Result<fvm_shared::sys::out::crypto::VerifyConsensusFault, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_consensus_fault<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::out::network::NetworkContext, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::context<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u64, u32, u64, u64, u64, u64), core::result::Result<fvm_shared::sys::out::send::Send, fvm::kernel::error::ExecutionError>, fvm::syscalls::send::send<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u64, u32, u64, u64, u64, u64, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::event::emit_event<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_replica_update<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_actor_code_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<fvm_shared::sys::out::ipld::IpldStat, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_stat<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_read<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::out::vm::MessageContext, fvm::kernel::error::ExecutionError>, fvm::syscalls::vm::message_context<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, i64, u32, u32), core::result::Result<[u8; 32], fvm::kernel::error::ExecutionError>, fvm::syscalls::rand::get_beacon_randomness<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, i64, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_code_cid_for_type<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, i32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_code_cid_for_type<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, i32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, i64, u32, u32), core::result::Result<[u8; 32], fvm::kernel::error::ExecutionError>, fvm::syscalls::rand::get_beacon_randomness<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, i64, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::tipset_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<fvm_shared::sys::out::ipld::IpldStat, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_stat<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_builtin_actor_type<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u64, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::resolve_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::root<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::total_fil_circ_supply<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<[u8; 65], fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::recover_secp_public_key<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::next_actor_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, i64), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::gas::charge_gas<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, i64, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64,), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::balance_of<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u64, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::create_actor<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_actor_code_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::current_balance<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::self_destruct<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_create<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, u32, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::compute_unsealed_sector_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, i64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::current_balance<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_seal<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::lookup_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, i64, u32, u32), core::result::Result<[u8; 32], fvm::kernel::error::ExecutionError>, fvm::syscalls::rand::get_chain_randomness<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, i64, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u64, u32, u64, u64, u64, u64), core::result::Result<fvm_shared::sys::out::send::Send, fvm::kernel::error::ExecutionError>, fvm::syscalls::send::send<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u64, u32, u64, u64, u64, u64, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_post<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_post<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32, u32, u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_signature<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::log<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::out::vm::MessageContext, fvm::kernel::error::ExecutionError>, fvm::syscalls::vm::message_context<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_replica_update<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_read<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<[u8; 65], fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::recover_secp_public_key<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_builtin_actor_type<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::lookup_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::store_artifact<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<fvm_shared::sys::out::ipld::IpldOpen, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_open<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, i64), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::gas::charge_gas<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, i64, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::batch_verify_seals<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::tipset_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32, u32, u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_signature<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::total_fil_circ_supply<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u64, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_link<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u64, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_link<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, u32, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::compute_unsealed_sector_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, i64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<fvm::syscalls::vm::Never, fvm::syscalls::error::Abort>, fvm::syscalls::vm::exit<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::hash<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::enabled<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::out::network::NetworkContext, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::context<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_aggregate_seals<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::create_actor<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, i64, u32, u32), core::result::Result<[u8; 32], fvm::kernel::error::ExecutionError>, fvm::syscalls::rand::get_chain_randomness<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, i64, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::hash<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64,), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::balance_of<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u64, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_create<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u64, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::resolve_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<u64, fvm::kernel::error::ExecutionError>, fvm::syscalls::gas::available<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::self_destruct<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_seal<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::root<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<fvm::syscalls::vm::Never, fvm::syscalls::error::Abort>, fvm::syscalls::vm::exit<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::set_root<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::next_actor_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<u64, fvm::kernel::error::ExecutionError>, fvm::syscalls::gas::available<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::event::emit_event<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::set_root<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::log<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_aggregate_seals<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
1894
996k
1895
996k
                /// This trampoline allows host code to indirectly call the
1896
996k
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
996k
                /// happens to reference our wrapped function).
1898
996k
                ///
1899
996k
                /// It reads the arguments out of the incoming `args` array,
1900
996k
                /// calls the given function pointer, and then stores the result
1901
996k
                /// back into the `args` array.
1902
996k
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
0
                    callee_vmctx: *mut VMOpaqueContext,
1904
0
                    caller_vmctx: *mut VMContext,
1905
0
                    ptr: *const VMFunctionBody,
1906
0
                    args: *mut ValRaw,
1907
0
                )
1908
0
                where
1909
0
                    $($args: WasmTy,)*
1910
0
                    R: WasmRet,
1911
0
                {
1912
0
                    let ptr = mem::transmute::<
1913
0
                        *const VMFunctionBody,
1914
0
                        unsafe extern "C" fn(
1915
0
                            *mut VMOpaqueContext,
1916
0
                            *mut VMContext,
1917
0
                            $( $args::Abi, )*
1918
0
                            R::Retptr,
1919
0
                        ) -> R::Abi,
1920
0
                    >(ptr);
1921
0
1922
0
                    let mut _n = 0;
1923
0
                    $(
1924
0
                        let $args = $args::abi_from_raw(args.add(_n));
1925
0
                        _n += 1;
1926
0
                    )*
1927
0
                    R::wrap_trampoline(args, |retptr| {
1928
996k
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
996k
                    });
1930
0
                }
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<i64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, i64, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::host_to_wasm_trampoline::<i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::host_to_wasm_trampoline::<i32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u32, i64, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u32, u64, u32, u64, u64, u64, u64, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u32, u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<i64, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::host_to_wasm_trampoline::<u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::host_to_wasm_trampoline::<u64, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u64, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::host_to_wasm_trampoline::<core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u32, u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u32, u32, u64, u32, u64, u64, u64, u64, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u32, u32, i64, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, i64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, i32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<_, _, _, _, _, _, _>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<_, _, _, _, _, _, _, _, _, _>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<_, _, _, _, _, _, _, _, _, _, _>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::host_to_wasm_trampoline::<_, _>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<_, _, _, _, _, _, _, _, _, _, _, _>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<_, _, _, _, _>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<_, _, _, _, _, _>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<_, _, _, _, _, _, _, _, _, _, _, _, _, _>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::host_to_wasm_trampoline::<_, _, _>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<_, _, _, _, _, _, _, _, _>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<_, _, _, _, _, _, _, _>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<_, _, _, _, _, _, _, _, _, _, _, _, _, _, _>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::host_to_wasm_trampoline::<_, _, _, _>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<_, _, _, _, _, _, _, _, _, _, _, _, _>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::host_to_wasm_trampoline::<_>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u64, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u32, u64, u32, u64, u64, u64, u64, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::host_to_wasm_trampoline::<i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, i64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<i64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, i32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, i64, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::host_to_wasm_trampoline::<u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::host_to_wasm_trampoline::<i32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::host_to_wasm_trampoline::<u64, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u32, i64, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::host_to_wasm_trampoline::<core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u32, u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<i64, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u32, u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u32, u32, i64, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u32, u32, u64, u32, u64, u64, u64, u64, core::result::Result<u32, wasmtime::trap::Trap>>
1931
996k
1932
996k
                let ty = R::func_type(
1933
996k
                    None::<ValType>.into_iter()
1934
996k
                        $(.chain(Some($args::valtype())))*
1935
996k
                );
1936
996k
1937
996k
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
996k
1939
996k
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
996k
1941
996k
                let ctx = unsafe {
1942
996k
                    VMHostFuncContext::new(
1943
996k
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
996k
                        shared_signature_id,
1945
996k
                        Box::new(self),
1946
996k
                    )
1947
996k
                };
1948
996k
1949
996k
                (ctx, shared_signature_id, trampoline)
1950
996k
            }
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::log<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
23.8k
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
23.8k
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
23.8k
                /// calls the wrapped host function, and returns the translated
1807
23.8k
                /// result back to Wasm.
1808
23.8k
                ///
1809
23.8k
                /// Note that this shim's ABI must *exactly* match that expected
1810
23.8k
                /// by Cranelift, since Cranelift is generating raw function
1811
23.8k
                /// calls directly to this function.
1812
23.8k
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
23.8k
                    vmctx: *mut VMOpaqueContext,
1814
23.8k
                    caller_vmctx: *mut VMContext,
1815
23.8k
                    $( $args: $args::Abi, )*
1816
23.8k
                    retptr: R::Retptr,
1817
23.8k
                ) -> R::Abi
1818
23.8k
                where
1819
23.8k
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
23.8k
                    $( $args: WasmTy, )*
1821
23.8k
                    R: WasmRet,
1822
23.8k
                {
1823
23.8k
                    enum CallResult<U> {
1824
23.8k
                        Ok(U),
1825
23.8k
                        Trap(anyhow::Error),
1826
23.8k
                        Panic(Box<dyn std::any::Any + Send>),
1827
23.8k
                    }
1828
23.8k
1829
23.8k
                    // Note that this `result` is intentionally scoped into a
1830
23.8k
                    // separate block. Handling traps and panics will involve
1831
23.8k
                    // longjmp-ing from this function which means we won't run
1832
23.8k
                    // destructors. As a result anything requiring a destructor
1833
23.8k
                    // should be part of this block, and the long-jmp-ing
1834
23.8k
                    // happens after the block in handling `CallResult`.
1835
23.8k
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
23.8k
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
23.8k
                        let state = (*vmctx).host_state();
1838
23.8k
1839
23.8k
                        // Double-check ourselves in debug mode, but we control
1840
23.8k
                        // the `Any` here so an unsafe downcast should also
1841
23.8k
                        // work.
1842
23.8k
                        debug_assert!(state.is::<F>());
1843
23.8k
                        let func = &*(state as *const _ as *const F);
1844
23.8k
1845
23.8k
                        let ret = {
1846
23.8k
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
23.8k
                                    return R::fallible_from_trap(trap);
1849
23.8k
                                }
1850
23.8k
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
23.8k
                                let r = func(
1852
23.8k
                                    caller.sub_caller(),
1853
23.8k
                                    $( $args, )*
1854
23.8k
                                );
1855
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
23.8k
                                    return R::fallible_from_trap(trap);
1857
23.8k
                                }
1858
23.8k
                                r.into_fallible()
1859
23.8k
                            }))
1860
23.8k
                        };
1861
23.8k
1862
23.8k
                        // Note that we need to be careful when dealing with traps
1863
23.8k
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
23.8k
                        // that it's not unwinding and consequently no Rust
1865
23.8k
                        // destructors are run. We need to be careful to ensure that
1866
23.8k
                        // nothing on the stack needs a destructor when we exit
1867
23.8k
                        // abnormally from this `match`, e.g. on `Err`, on
1868
23.8k
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
23.8k
                        match ret {
1870
23.8k
                            Err(panic) => CallResult::Panic(panic),
1871
23.8k
                            Ok(ret) => {
1872
23.8k
                                // Because the wrapped function is not `unsafe`, we
1873
23.8k
                                // can't assume it returned a value that is
1874
23.8k
                                // compatible with this store.
1875
23.8k
                                if !ret.compatible_with_store(caller.store.0) {
1876
23.8k
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
23.8k
                                } else {
1878
23.8k
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
23.8k
                                        Ok(val) => CallResult::Ok(val),
1880
23.8k
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
23.8k
                                    }
1882
23.8k
                                }
1883
23.8k
1884
23.8k
                            }
1885
23.8k
                        }
1886
23.8k
                    });
1887
23.8k
1888
23.8k
                    match result {
1889
23.8k
                        CallResult::Ok(val) => val,
1890
23.8k
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
23.8k
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
23.8k
                    }
1893
23.8k
                }
1894
23.8k
1895
23.8k
                /// This trampoline allows host code to indirectly call the
1896
23.8k
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
23.8k
                /// happens to reference our wrapped function).
1898
23.8k
                ///
1899
23.8k
                /// It reads the arguments out of the incoming `args` array,
1900
23.8k
                /// calls the given function pointer, and then stores the result
1901
23.8k
                /// back into the `args` array.
1902
23.8k
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
23.8k
                    callee_vmctx: *mut VMOpaqueContext,
1904
23.8k
                    caller_vmctx: *mut VMContext,
1905
23.8k
                    ptr: *const VMFunctionBody,
1906
23.8k
                    args: *mut ValRaw,
1907
23.8k
                )
1908
23.8k
                where
1909
23.8k
                    $($args: WasmTy,)*
1910
23.8k
                    R: WasmRet,
1911
23.8k
                {
1912
23.8k
                    let ptr = mem::transmute::<
1913
23.8k
                        *const VMFunctionBody,
1914
23.8k
                        unsafe extern "C" fn(
1915
23.8k
                            *mut VMOpaqueContext,
1916
23.8k
                            *mut VMContext,
1917
23.8k
                            $( $args::Abi, )*
1918
23.8k
                            R::Retptr,
1919
23.8k
                        ) -> R::Abi,
1920
23.8k
                    >(ptr);
1921
23.8k
1922
23.8k
                    let mut _n = 0;
1923
23.8k
                    $(
1924
23.8k
                        let $args = $args::abi_from_raw(args.add(_n));
1925
23.8k
                        _n += 1;
1926
23.8k
                    )*
1927
23.8k
                    R::wrap_trampoline(args, |retptr| {
1928
23.8k
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
23.8k
                    });
1930
23.8k
                }
1931
23.8k
1932
23.8k
                let ty = R::func_type(
1933
23.8k
                    None::<ValType>.into_iter()
1934
23.8k
                        $(.chain(Some($args::valtype())))*
1935
23.8k
                );
1936
23.8k
1937
23.8k
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
23.8k
1939
23.8k
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
23.8k
1941
23.8k
                let ctx = unsafe {
1942
23.8k
                    VMHostFuncContext::new(
1943
23.8k
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
23.8k
                        shared_signature_id,
1945
23.8k
                        Box::new(self),
1946
23.8k
                    )
1947
23.8k
                };
1948
23.8k
1949
23.8k
                (ctx, shared_signature_id, trampoline)
1950
23.8k
            }
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::set_root<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<fvm_shared::sys::out::ipld::IpldOpen, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_open<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_read<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
23.8k
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
23.8k
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
23.8k
                /// calls the wrapped host function, and returns the translated
1807
23.8k
                /// result back to Wasm.
1808
23.8k
                ///
1809
23.8k
                /// Note that this shim's ABI must *exactly* match that expected
1810
23.8k
                /// by Cranelift, since Cranelift is generating raw function
1811
23.8k
                /// calls directly to this function.
1812
23.8k
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
23.8k
                    vmctx: *mut VMOpaqueContext,
1814
23.8k
                    caller_vmctx: *mut VMContext,
1815
23.8k
                    $( $args: $args::Abi, )*
1816
23.8k
                    retptr: R::Retptr,
1817
23.8k
                ) -> R::Abi
1818
23.8k
                where
1819
23.8k
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
23.8k
                    $( $args: WasmTy, )*
1821
23.8k
                    R: WasmRet,
1822
23.8k
                {
1823
23.8k
                    enum CallResult<U> {
1824
23.8k
                        Ok(U),
1825
23.8k
                        Trap(anyhow::Error),
1826
23.8k
                        Panic(Box<dyn std::any::Any + Send>),
1827
23.8k
                    }
1828
23.8k
1829
23.8k
                    // Note that this `result` is intentionally scoped into a
1830
23.8k
                    // separate block. Handling traps and panics will involve
1831
23.8k
                    // longjmp-ing from this function which means we won't run
1832
23.8k
                    // destructors. As a result anything requiring a destructor
1833
23.8k
                    // should be part of this block, and the long-jmp-ing
1834
23.8k
                    // happens after the block in handling `CallResult`.
1835
23.8k
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
23.8k
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
23.8k
                        let state = (*vmctx).host_state();
1838
23.8k
1839
23.8k
                        // Double-check ourselves in debug mode, but we control
1840
23.8k
                        // the `Any` here so an unsafe downcast should also
1841
23.8k
                        // work.
1842
23.8k
                        debug_assert!(state.is::<F>());
1843
23.8k
                        let func = &*(state as *const _ as *const F);
1844
23.8k
1845
23.8k
                        let ret = {
1846
23.8k
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
23.8k
                                    return R::fallible_from_trap(trap);
1849
23.8k
                                }
1850
23.8k
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
23.8k
                                let r = func(
1852
23.8k
                                    caller.sub_caller(),
1853
23.8k
                                    $( $args, )*
1854
23.8k
                                );
1855
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
23.8k
                                    return R::fallible_from_trap(trap);
1857
23.8k
                                }
1858
23.8k
                                r.into_fallible()
1859
23.8k
                            }))
1860
23.8k
                        };
1861
23.8k
1862
23.8k
                        // Note that we need to be careful when dealing with traps
1863
23.8k
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
23.8k
                        // that it's not unwinding and consequently no Rust
1865
23.8k
                        // destructors are run. We need to be careful to ensure that
1866
23.8k
                        // nothing on the stack needs a destructor when we exit
1867
23.8k
                        // abnormally from this `match`, e.g. on `Err`, on
1868
23.8k
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
23.8k
                        match ret {
1870
23.8k
                            Err(panic) => CallResult::Panic(panic),
1871
23.8k
                            Ok(ret) => {
1872
23.8k
                                // Because the wrapped function is not `unsafe`, we
1873
23.8k
                                // can't assume it returned a value that is
1874
23.8k
                                // compatible with this store.
1875
23.8k
                                if !ret.compatible_with_store(caller.store.0) {
1876
23.8k
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
23.8k
                                } else {
1878
23.8k
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
23.8k
                                        Ok(val) => CallResult::Ok(val),
1880
23.8k
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
23.8k
                                    }
1882
23.8k
                                }
1883
23.8k
1884
23.8k
                            }
1885
23.8k
                        }
1886
23.8k
                    });
1887
23.8k
1888
23.8k
                    match result {
1889
23.8k
                        CallResult::Ok(val) => val,
1890
23.8k
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
23.8k
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
23.8k
                    }
1893
23.8k
                }
1894
23.8k
1895
23.8k
                /// This trampoline allows host code to indirectly call the
1896
23.8k
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
23.8k
                /// happens to reference our wrapped function).
1898
23.8k
                ///
1899
23.8k
                /// It reads the arguments out of the incoming `args` array,
1900
23.8k
                /// calls the given function pointer, and then stores the result
1901
23.8k
                /// back into the `args` array.
1902
23.8k
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
23.8k
                    callee_vmctx: *mut VMOpaqueContext,
1904
23.8k
                    caller_vmctx: *mut VMContext,
1905
23.8k
                    ptr: *const VMFunctionBody,
1906
23.8k
                    args: *mut ValRaw,
1907
23.8k
                )
1908
23.8k
                where
1909
23.8k
                    $($args: WasmTy,)*
1910
23.8k
                    R: WasmRet,
1911
23.8k
                {
1912
23.8k
                    let ptr = mem::transmute::<
1913
23.8k
                        *const VMFunctionBody,
1914
23.8k
                        unsafe extern "C" fn(
1915
23.8k
                            *mut VMOpaqueContext,
1916
23.8k
                            *mut VMContext,
1917
23.8k
                            $( $args::Abi, )*
1918
23.8k
                            R::Retptr,
1919
23.8k
                        ) -> R::Abi,
1920
23.8k
                    >(ptr);
1921
23.8k
1922
23.8k
                    let mut _n = 0;
1923
23.8k
                    $(
1924
23.8k
                        let $args = $args::abi_from_raw(args.add(_n));
1925
23.8k
                        _n += 1;
1926
23.8k
                    )*
1927
23.8k
                    R::wrap_trampoline(args, |retptr| {
1928
23.8k
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
23.8k
                    });
1930
23.8k
                }
1931
23.8k
1932
23.8k
                let ty = R::func_type(
1933
23.8k
                    None::<ValType>.into_iter()
1934
23.8k
                        $(.chain(Some($args::valtype())))*
1935
23.8k
                );
1936
23.8k
1937
23.8k
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
23.8k
1939
23.8k
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
23.8k
1941
23.8k
                let ctx = unsafe {
1942
23.8k
                    VMHostFuncContext::new(
1943
23.8k
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
23.8k
                        shared_signature_id,
1945
23.8k
                        Box::new(self),
1946
23.8k
                    )
1947
23.8k
                };
1948
23.8k
1949
23.8k
                (ctx, shared_signature_id, trampoline)
1950
23.8k
            }
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::out::network::NetworkContext, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::context<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
23.8k
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
23.8k
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
23.8k
                /// calls the wrapped host function, and returns the translated
1807
23.8k
                /// result back to Wasm.
1808
23.8k
                ///
1809
23.8k
                /// Note that this shim's ABI must *exactly* match that expected
1810
23.8k
                /// by Cranelift, since Cranelift is generating raw function
1811
23.8k
                /// calls directly to this function.
1812
23.8k
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
23.8k
                    vmctx: *mut VMOpaqueContext,
1814
23.8k
                    caller_vmctx: *mut VMContext,
1815
23.8k
                    $( $args: $args::Abi, )*
1816
23.8k
                    retptr: R::Retptr,
1817
23.8k
                ) -> R::Abi
1818
23.8k
                where
1819
23.8k
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
23.8k
                    $( $args: WasmTy, )*
1821
23.8k
                    R: WasmRet,
1822
23.8k
                {
1823
23.8k
                    enum CallResult<U> {
1824
23.8k
                        Ok(U),
1825
23.8k
                        Trap(anyhow::Error),
1826
23.8k
                        Panic(Box<dyn std::any::Any + Send>),
1827
23.8k
                    }
1828
23.8k
1829
23.8k
                    // Note that this `result` is intentionally scoped into a
1830
23.8k
                    // separate block. Handling traps and panics will involve
1831
23.8k
                    // longjmp-ing from this function which means we won't run
1832
23.8k
                    // destructors. As a result anything requiring a destructor
1833
23.8k
                    // should be part of this block, and the long-jmp-ing
1834
23.8k
                    // happens after the block in handling `CallResult`.
1835
23.8k
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
23.8k
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
23.8k
                        let state = (*vmctx).host_state();
1838
23.8k
1839
23.8k
                        // Double-check ourselves in debug mode, but we control
1840
23.8k
                        // the `Any` here so an unsafe downcast should also
1841
23.8k
                        // work.
1842
23.8k
                        debug_assert!(state.is::<F>());
1843
23.8k
                        let func = &*(state as *const _ as *const F);
1844
23.8k
1845
23.8k
                        let ret = {
1846
23.8k
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
23.8k
                                    return R::fallible_from_trap(trap);
1849
23.8k
                                }
1850
23.8k
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
23.8k
                                let r = func(
1852
23.8k
                                    caller.sub_caller(),
1853
23.8k
                                    $( $args, )*
1854
23.8k
                                );
1855
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
23.8k
                                    return R::fallible_from_trap(trap);
1857
23.8k
                                }
1858
23.8k
                                r.into_fallible()
1859
23.8k
                            }))
1860
23.8k
                        };
1861
23.8k
1862
23.8k
                        // Note that we need to be careful when dealing with traps
1863
23.8k
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
23.8k
                        // that it's not unwinding and consequently no Rust
1865
23.8k
                        // destructors are run. We need to be careful to ensure that
1866
23.8k
                        // nothing on the stack needs a destructor when we exit
1867
23.8k
                        // abnormally from this `match`, e.g. on `Err`, on
1868
23.8k
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
23.8k
                        match ret {
1870
23.8k
                            Err(panic) => CallResult::Panic(panic),
1871
23.8k
                            Ok(ret) => {
1872
23.8k
                                // Because the wrapped function is not `unsafe`, we
1873
23.8k
                                // can't assume it returned a value that is
1874
23.8k
                                // compatible with this store.
1875
23.8k
                                if !ret.compatible_with_store(caller.store.0) {
1876
23.8k
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
23.8k
                                } else {
1878
23.8k
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
23.8k
                                        Ok(val) => CallResult::Ok(val),
1880
23.8k
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
23.8k
                                    }
1882
23.8k
                                }
1883
23.8k
1884
23.8k
                            }
1885
23.8k
                        }
1886
23.8k
                    });
1887
23.8k
1888
23.8k
                    match result {
1889
23.8k
                        CallResult::Ok(val) => val,
1890
23.8k
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
23.8k
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
23.8k
                    }
1893
23.8k
                }
1894
23.8k
1895
23.8k
                /// This trampoline allows host code to indirectly call the
1896
23.8k
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
23.8k
                /// happens to reference our wrapped function).
1898
23.8k
                ///
1899
23.8k
                /// It reads the arguments out of the incoming `args` array,
1900
23.8k
                /// calls the given function pointer, and then stores the result
1901
23.8k
                /// back into the `args` array.
1902
23.8k
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
23.8k
                    callee_vmctx: *mut VMOpaqueContext,
1904
23.8k
                    caller_vmctx: *mut VMContext,
1905
23.8k
                    ptr: *const VMFunctionBody,
1906
23.8k
                    args: *mut ValRaw,
1907
23.8k
                )
1908
23.8k
                where
1909
23.8k
                    $($args: WasmTy,)*
1910
23.8k
                    R: WasmRet,
1911
23.8k
                {
1912
23.8k
                    let ptr = mem::transmute::<
1913
23.8k
                        *const VMFunctionBody,
1914
23.8k
                        unsafe extern "C" fn(
1915
23.8k
                            *mut VMOpaqueContext,
1916
23.8k
                            *mut VMContext,
1917
23.8k
                            $( $args::Abi, )*
1918
23.8k
                            R::Retptr,
1919
23.8k
                        ) -> R::Abi,
1920
23.8k
                    >(ptr);
1921
23.8k
1922
23.8k
                    let mut _n = 0;
1923
23.8k
                    $(
1924
23.8k
                        let $args = $args::abi_from_raw(args.add(_n));
1925
23.8k
                        _n += 1;
1926
23.8k
                    )*
1927
23.8k
                    R::wrap_trampoline(args, |retptr| {
1928
23.8k
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
23.8k
                    });
1930
23.8k
                }
1931
23.8k
1932
23.8k
                let ty = R::func_type(
1933
23.8k
                    None::<ValType>.into_iter()
1934
23.8k
                        $(.chain(Some($args::valtype())))*
1935
23.8k
                );
1936
23.8k
1937
23.8k
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
23.8k
1939
23.8k
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
23.8k
1941
23.8k
                let ctx = unsafe {
1942
23.8k
                    VMHostFuncContext::new(
1943
23.8k
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
23.8k
                        shared_signature_id,
1945
23.8k
                        Box::new(self),
1946
23.8k
                    )
1947
23.8k
                };
1948
23.8k
1949
23.8k
                (ctx, shared_signature_id, trampoline)
1950
23.8k
            }
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_code_cid_for_type<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, i32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::out::vm::MessageContext, fvm::kernel::error::ExecutionError>, fvm::syscalls::vm::message_context<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
23.8k
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
23.8k
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
23.8k
                /// calls the wrapped host function, and returns the translated
1807
23.8k
                /// result back to Wasm.
1808
23.8k
                ///
1809
23.8k
                /// Note that this shim's ABI must *exactly* match that expected
1810
23.8k
                /// by Cranelift, since Cranelift is generating raw function
1811
23.8k
                /// calls directly to this function.
1812
23.8k
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
23.8k
                    vmctx: *mut VMOpaqueContext,
1814
23.8k
                    caller_vmctx: *mut VMContext,
1815
23.8k
                    $( $args: $args::Abi, )*
1816
23.8k
                    retptr: R::Retptr,
1817
23.8k
                ) -> R::Abi
1818
23.8k
                where
1819
23.8k
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
23.8k
                    $( $args: WasmTy, )*
1821
23.8k
                    R: WasmRet,
1822
23.8k
                {
1823
23.8k
                    enum CallResult<U> {
1824
23.8k
                        Ok(U),
1825
23.8k
                        Trap(anyhow::Error),
1826
23.8k
                        Panic(Box<dyn std::any::Any + Send>),
1827
23.8k
                    }
1828
23.8k
1829
23.8k
                    // Note that this `result` is intentionally scoped into a
1830
23.8k
                    // separate block. Handling traps and panics will involve
1831
23.8k
                    // longjmp-ing from this function which means we won't run
1832
23.8k
                    // destructors. As a result anything requiring a destructor
1833
23.8k
                    // should be part of this block, and the long-jmp-ing
1834
23.8k
                    // happens after the block in handling `CallResult`.
1835
23.8k
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
23.8k
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
23.8k
                        let state = (*vmctx).host_state();
1838
23.8k
1839
23.8k
                        // Double-check ourselves in debug mode, but we control
1840
23.8k
                        // the `Any` here so an unsafe downcast should also
1841
23.8k
                        // work.
1842
23.8k
                        debug_assert!(state.is::<F>());
1843
23.8k
                        let func = &*(state as *const _ as *const F);
1844
23.8k
1845
23.8k
                        let ret = {
1846
23.8k
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
23.8k
                                    return R::fallible_from_trap(trap);
1849
23.8k
                                }
1850
23.8k
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
23.8k
                                let r = func(
1852
23.8k
                                    caller.sub_caller(),
1853
23.8k
                                    $( $args, )*
1854
23.8k
                                );
1855
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
23.8k
                                    return R::fallible_from_trap(trap);
1857
23.8k
                                }
1858
23.8k
                                r.into_fallible()
1859
23.8k
                            }))
1860
23.8k
                        };
1861
23.8k
1862
23.8k
                        // Note that we need to be careful when dealing with traps
1863
23.8k
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
23.8k
                        // that it's not unwinding and consequently no Rust
1865
23.8k
                        // destructors are run. We need to be careful to ensure that
1866
23.8k
                        // nothing on the stack needs a destructor when we exit
1867
23.8k
                        // abnormally from this `match`, e.g. on `Err`, on
1868
23.8k
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
23.8k
                        match ret {
1870
23.8k
                            Err(panic) => CallResult::Panic(panic),
1871
23.8k
                            Ok(ret) => {
1872
23.8k
                                // Because the wrapped function is not `unsafe`, we
1873
23.8k
                                // can't assume it returned a value that is
1874
23.8k
                                // compatible with this store.
1875
23.8k
                                if !ret.compatible_with_store(caller.store.0) {
1876
23.8k
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
23.8k
                                } else {
1878
23.8k
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
23.8k
                                        Ok(val) => CallResult::Ok(val),
1880
23.8k
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
23.8k
                                    }
1882
23.8k
                                }
1883
23.8k
1884
23.8k
                            }
1885
23.8k
                        }
1886
23.8k
                    });
1887
23.8k
1888
23.8k
                    match result {
1889
23.8k
                        CallResult::Ok(val) => val,
1890
23.8k
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
23.8k
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
23.8k
                    }
1893
23.8k
                }
1894
23.8k
1895
23.8k
                /// This trampoline allows host code to indirectly call the
1896
23.8k
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
23.8k
                /// happens to reference our wrapped function).
1898
23.8k
                ///
1899
23.8k
                /// It reads the arguments out of the incoming `args` array,
1900
23.8k
                /// calls the given function pointer, and then stores the result
1901
23.8k
                /// back into the `args` array.
1902
23.8k
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
23.8k
                    callee_vmctx: *mut VMOpaqueContext,
1904
23.8k
                    caller_vmctx: *mut VMContext,
1905
23.8k
                    ptr: *const VMFunctionBody,
1906
23.8k
                    args: *mut ValRaw,
1907
23.8k
                )
1908
23.8k
                where
1909
23.8k
                    $($args: WasmTy,)*
1910
23.8k
                    R: WasmRet,
1911
23.8k
                {
1912
23.8k
                    let ptr = mem::transmute::<
1913
23.8k
                        *const VMFunctionBody,
1914
23.8k
                        unsafe extern "C" fn(
1915
23.8k
                            *mut VMOpaqueContext,
1916
23.8k
                            *mut VMContext,
1917
23.8k
                            $( $args::Abi, )*
1918
23.8k
                            R::Retptr,
1919
23.8k
                        ) -> R::Abi,
1920
23.8k
                    >(ptr);
1921
23.8k
1922
23.8k
                    let mut _n = 0;
1923
23.8k
                    $(
1924
23.8k
                        let $args = $args::abi_from_raw(args.add(_n));
1925
23.8k
                        _n += 1;
1926
23.8k
                    )*
1927
23.8k
                    R::wrap_trampoline(args, |retptr| {
1928
23.8k
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
23.8k
                    });
1930
23.8k
                }
1931
23.8k
1932
23.8k
                let ty = R::func_type(
1933
23.8k
                    None::<ValType>.into_iter()
1934
23.8k
                        $(.chain(Some($args::valtype())))*
1935
23.8k
                );
1936
23.8k
1937
23.8k
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
23.8k
1939
23.8k
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
23.8k
1941
23.8k
                let ctx = unsafe {
1942
23.8k
                    VMHostFuncContext::new(
1943
23.8k
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
23.8k
                        shared_signature_id,
1945
23.8k
                        Box::new(self),
1946
23.8k
                    )
1947
23.8k
                };
1948
23.8k
1949
23.8k
                (ctx, shared_signature_id, trampoline)
1950
23.8k
            }
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, u32, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::compute_unsealed_sector_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, i64, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<[u8; 65], fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::recover_secp_public_key<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, i64, u32, u32), core::result::Result<[u8; 32], fvm::kernel::error::ExecutionError>, fvm::syscalls::rand::get_beacon_randomness<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, i64, i64, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_create<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u64, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::tipset_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, i64, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
23.8k
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
23.8k
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
23.8k
                /// calls the wrapped host function, and returns the translated
1807
23.8k
                /// result back to Wasm.
1808
23.8k
                ///
1809
23.8k
                /// Note that this shim's ABI must *exactly* match that expected
1810
23.8k
                /// by Cranelift, since Cranelift is generating raw function
1811
23.8k
                /// calls directly to this function.
1812
23.8k
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
23.8k
                    vmctx: *mut VMOpaqueContext,
1814
23.8k
                    caller_vmctx: *mut VMContext,
1815
23.8k
                    $( $args: $args::Abi, )*
1816
23.8k
                    retptr: R::Retptr,
1817
23.8k
                ) -> R::Abi
1818
23.8k
                where
1819
23.8k
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
23.8k
                    $( $args: WasmTy, )*
1821
23.8k
                    R: WasmRet,
1822
23.8k
                {
1823
23.8k
                    enum CallResult<U> {
1824
23.8k
                        Ok(U),
1825
23.8k
                        Trap(anyhow::Error),
1826
23.8k
                        Panic(Box<dyn std::any::Any + Send>),
1827
23.8k
                    }
1828
23.8k
1829
23.8k
                    // Note that this `result` is intentionally scoped into a
1830
23.8k
                    // separate block. Handling traps and panics will involve
1831
23.8k
                    // longjmp-ing from this function which means we won't run
1832
23.8k
                    // destructors. As a result anything requiring a destructor
1833
23.8k
                    // should be part of this block, and the long-jmp-ing
1834
23.8k
                    // happens after the block in handling `CallResult`.
1835
23.8k
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
23.8k
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
23.8k
                        let state = (*vmctx).host_state();
1838
23.8k
1839
23.8k
                        // Double-check ourselves in debug mode, but we control
1840
23.8k
                        // the `Any` here so an unsafe downcast should also
1841
23.8k
                        // work.
1842
23.8k
                        debug_assert!(state.is::<F>());
1843
23.8k
                        let func = &*(state as *const _ as *const F);
1844
23.8k
1845
23.8k
                        let ret = {
1846
23.8k
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
23.8k
                                    return R::fallible_from_trap(trap);
1849
23.8k
                                }
1850
23.8k
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
23.8k
                                let r = func(
1852
23.8k
                                    caller.sub_caller(),
1853
23.8k
                                    $( $args, )*
1854
23.8k
                                );
1855
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
23.8k
                                    return R::fallible_from_trap(trap);
1857
23.8k
                                }
1858
23.8k
                                r.into_fallible()
1859
23.8k
                            }))
1860
23.8k
                        };
1861
23.8k
1862
23.8k
                        // Note that we need to be careful when dealing with traps
1863
23.8k
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
23.8k
                        // that it's not unwinding and consequently no Rust
1865
23.8k
                        // destructors are run. We need to be careful to ensure that
1866
23.8k
                        // nothing on the stack needs a destructor when we exit
1867
23.8k
                        // abnormally from this `match`, e.g. on `Err`, on
1868
23.8k
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
23.8k
                        match ret {
1870
23.8k
                            Err(panic) => CallResult::Panic(panic),
1871
23.8k
                            Ok(ret) => {
1872
23.8k
                                // Because the wrapped function is not `unsafe`, we
1873
23.8k
                                // can't assume it returned a value that is
1874
23.8k
                                // compatible with this store.
1875
23.8k
                                if !ret.compatible_with_store(caller.store.0) {
1876
23.8k
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
23.8k
                                } else {
1878
23.8k
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
23.8k
                                        Ok(val) => CallResult::Ok(val),
1880
23.8k
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
23.8k
                                    }
1882
23.8k
                                }
1883
23.8k
1884
23.8k
                            }
1885
23.8k
                        }
1886
23.8k
                    });
1887
23.8k
1888
23.8k
                    match result {
1889
23.8k
                        CallResult::Ok(val) => val,
1890
23.8k
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
23.8k
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
23.8k
                    }
1893
23.8k
                }
1894
23.8k
1895
23.8k
                /// This trampoline allows host code to indirectly call the
1896
23.8k
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
23.8k
                /// happens to reference our wrapped function).
1898
23.8k
                ///
1899
23.8k
                /// It reads the arguments out of the incoming `args` array,
1900
23.8k
                /// calls the given function pointer, and then stores the result
1901
23.8k
                /// back into the `args` array.
1902
23.8k
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
23.8k
                    callee_vmctx: *mut VMOpaqueContext,
1904
23.8k
                    caller_vmctx: *mut VMContext,
1905
23.8k
                    ptr: *const VMFunctionBody,
1906
23.8k
                    args: *mut ValRaw,
1907
23.8k
                )
1908
23.8k
                where
1909
23.8k
                    $($args: WasmTy,)*
1910
23.8k
                    R: WasmRet,
1911
23.8k
                {
1912
23.8k
                    let ptr = mem::transmute::<
1913
23.8k
                        *const VMFunctionBody,
1914
23.8k
                        unsafe extern "C" fn(
1915
23.8k
                            *mut VMOpaqueContext,
1916
23.8k
                            *mut VMContext,
1917
23.8k
                            $( $args::Abi, )*
1918
23.8k
                            R::Retptr,
1919
23.8k
                        ) -> R::Abi,
1920
23.8k
                    >(ptr);
1921
23.8k
1922
23.8k
                    let mut _n = 0;
1923
23.8k
                    $(
1924
23.8k
                        let $args = $args::abi_from_raw(args.add(_n));
1925
23.8k
                        _n += 1;
1926
23.8k
                    )*
1927
23.8k
                    R::wrap_trampoline(args, |retptr| {
1928
23.8k
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
23.8k
                    });
1930
23.8k
                }
1931
23.8k
1932
23.8k
                let ty = R::func_type(
1933
23.8k
                    None::<ValType>.into_iter()
1934
23.8k
                        $(.chain(Some($args::valtype())))*
1935
23.8k
                );
1936
23.8k
1937
23.8k
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
23.8k
1939
23.8k
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
23.8k
1941
23.8k
                let ctx = unsafe {
1942
23.8k
                    VMHostFuncContext::new(
1943
23.8k
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
23.8k
                        shared_signature_id,
1945
23.8k
                        Box::new(self),
1946
23.8k
                    )
1947
23.8k
                };
1948
23.8k
1949
23.8k
                (ctx, shared_signature_id, trampoline)
1950
23.8k
            }
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::total_fil_circ_supply<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
23.8k
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
23.8k
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
23.8k
                /// calls the wrapped host function, and returns the translated
1807
23.8k
                /// result back to Wasm.
1808
23.8k
                ///
1809
23.8k
                /// Note that this shim's ABI must *exactly* match that expected
1810
23.8k
                /// by Cranelift, since Cranelift is generating raw function
1811
23.8k
                /// calls directly to this function.
1812
23.8k
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
23.8k
                    vmctx: *mut VMOpaqueContext,
1814
23.8k
                    caller_vmctx: *mut VMContext,
1815
23.8k
                    $( $args: $args::Abi, )*
1816
23.8k
                    retptr: R::Retptr,
1817
23.8k
                ) -> R::Abi
1818
23.8k
                where
1819
23.8k
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
23.8k
                    $( $args: WasmTy, )*
1821
23.8k
                    R: WasmRet,
1822
23.8k
                {
1823
23.8k
                    enum CallResult<U> {
1824
23.8k
                        Ok(U),
1825
23.8k
                        Trap(anyhow::Error),
1826
23.8k
                        Panic(Box<dyn std::any::Any + Send>),
1827
23.8k
                    }
1828
23.8k
1829
23.8k
                    // Note that this `result` is intentionally scoped into a
1830
23.8k
                    // separate block. Handling traps and panics will involve
1831
23.8k
                    // longjmp-ing from this function which means we won't run
1832
23.8k
                    // destructors. As a result anything requiring a destructor
1833
23.8k
                    // should be part of this block, and the long-jmp-ing
1834
23.8k
                    // happens after the block in handling `CallResult`.
1835
23.8k
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
23.8k
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
23.8k
                        let state = (*vmctx).host_state();
1838
23.8k
1839
23.8k
                        // Double-check ourselves in debug mode, but we control
1840
23.8k
                        // the `Any` here so an unsafe downcast should also
1841
23.8k
                        // work.
1842
23.8k
                        debug_assert!(state.is::<F>());
1843
23.8k
                        let func = &*(state as *const _ as *const F);
1844
23.8k
1845
23.8k
                        let ret = {
1846
23.8k
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
23.8k
                                    return R::fallible_from_trap(trap);
1849
23.8k
                                }
1850
23.8k
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
23.8k
                                let r = func(
1852
23.8k
                                    caller.sub_caller(),
1853
23.8k
                                    $( $args, )*
1854
23.8k
                                );
1855
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
23.8k
                                    return R::fallible_from_trap(trap);
1857
23.8k
                                }
1858
23.8k
                                r.into_fallible()
1859
23.8k
                            }))
1860
23.8k
                        };
1861
23.8k
1862
23.8k
                        // Note that we need to be careful when dealing with traps
1863
23.8k
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
23.8k
                        // that it's not unwinding and consequently no Rust
1865
23.8k
                        // destructors are run. We need to be careful to ensure that
1866
23.8k
                        // nothing on the stack needs a destructor when we exit
1867
23.8k
                        // abnormally from this `match`, e.g. on `Err`, on
1868
23.8k
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
23.8k
                        match ret {
1870
23.8k
                            Err(panic) => CallResult::Panic(panic),
1871
23.8k
                            Ok(ret) => {
1872
23.8k
                                // Because the wrapped function is not `unsafe`, we
1873
23.8k
                                // can't assume it returned a value that is
1874
23.8k
                                // compatible with this store.
1875
23.8k
                                if !ret.compatible_with_store(caller.store.0) {
1876
23.8k
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
23.8k
                                } else {
1878
23.8k
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
23.8k
                                        Ok(val) => CallResult::Ok(val),
1880
23.8k
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
23.8k
                                    }
1882
23.8k
                                }
1883
23.8k
1884
23.8k
                            }
1885
23.8k
                        }
1886
23.8k
                    });
1887
23.8k
1888
23.8k
                    match result {
1889
23.8k
                        CallResult::Ok(val) => val,
1890
23.8k
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
23.8k
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
23.8k
                    }
1893
23.8k
                }
1894
23.8k
1895
23.8k
                /// This trampoline allows host code to indirectly call the
1896
23.8k
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
23.8k
                /// happens to reference our wrapped function).
1898
23.8k
                ///
1899
23.8k
                /// It reads the arguments out of the incoming `args` array,
1900
23.8k
                /// calls the given function pointer, and then stores the result
1901
23.8k
                /// back into the `args` array.
1902
23.8k
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
23.8k
                    callee_vmctx: *mut VMOpaqueContext,
1904
23.8k
                    caller_vmctx: *mut VMContext,
1905
23.8k
                    ptr: *const VMFunctionBody,
1906
23.8k
                    args: *mut ValRaw,
1907
23.8k
                )
1908
23.8k
                where
1909
23.8k
                    $($args: WasmTy,)*
1910
23.8k
                    R: WasmRet,
1911
23.8k
                {
1912
23.8k
                    let ptr = mem::transmute::<
1913
23.8k
                        *const VMFunctionBody,
1914
23.8k
                        unsafe extern "C" fn(
1915
23.8k
                            *mut VMOpaqueContext,
1916
23.8k
                            *mut VMContext,
1917
23.8k
                            $( $args::Abi, )*
1918
23.8k
                            R::Retptr,
1919
23.8k
                        ) -> R::Abi,
1920
23.8k
                    >(ptr);
1921
23.8k
1922
23.8k
                    let mut _n = 0;
1923
23.8k
                    $(
1924
23.8k
                        let $args = $args::abi_from_raw(args.add(_n));
1925
23.8k
                        _n += 1;
1926
23.8k
                    )*
1927
23.8k
                    R::wrap_trampoline(args, |retptr| {
1928
23.8k
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
23.8k
                    });
1930
23.8k
                }
1931
23.8k
1932
23.8k
                let ty = R::func_type(
1933
23.8k
                    None::<ValType>.into_iter()
1934
23.8k
                        $(.chain(Some($args::valtype())))*
1935
23.8k
                );
1936
23.8k
1937
23.8k
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
23.8k
1939
23.8k
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
23.8k
1941
23.8k
                let ctx = unsafe {
1942
23.8k
                    VMHostFuncContext::new(
1943
23.8k
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
23.8k
                        shared_signature_id,
1945
23.8k
                        Box::new(self),
1946
23.8k
                    )
1947
23.8k
                };
1948
23.8k
1949
23.8k
                (ctx, shared_signature_id, trampoline)
1950
23.8k
            }
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::enabled<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
23.8k
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
23.8k
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
23.8k
                /// calls the wrapped host function, and returns the translated
1807
23.8k
                /// result back to Wasm.
1808
23.8k
                ///
1809
23.8k
                /// Note that this shim's ABI must *exactly* match that expected
1810
23.8k
                /// by Cranelift, since Cranelift is generating raw function
1811
23.8k
                /// calls directly to this function.
1812
23.8k
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
23.8k
                    vmctx: *mut VMOpaqueContext,
1814
23.8k
                    caller_vmctx: *mut VMContext,
1815
23.8k
                    $( $args: $args::Abi, )*
1816
23.8k
                    retptr: R::Retptr,
1817
23.8k
                ) -> R::Abi
1818
23.8k
                where
1819
23.8k
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
23.8k
                    $( $args: WasmTy, )*
1821
23.8k
                    R: WasmRet,
1822
23.8k
                {
1823
23.8k
                    enum CallResult<U> {
1824
23.8k
                        Ok(U),
1825
23.8k
                        Trap(anyhow::Error),
1826
23.8k
                        Panic(Box<dyn std::any::Any + Send>),
1827
23.8k
                    }
1828
23.8k
1829
23.8k
                    // Note that this `result` is intentionally scoped into a
1830
23.8k
                    // separate block. Handling traps and panics will involve
1831
23.8k
                    // longjmp-ing from this function which means we won't run
1832
23.8k
                    // destructors. As a result anything requiring a destructor
1833
23.8k
                    // should be part of this block, and the long-jmp-ing
1834
23.8k
                    // happens after the block in handling `CallResult`.
1835
23.8k
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
23.8k
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
23.8k
                        let state = (*vmctx).host_state();
1838
23.8k
1839
23.8k
                        // Double-check ourselves in debug mode, but we control
1840
23.8k
                        // the `Any` here so an unsafe downcast should also
1841
23.8k
                        // work.
1842
23.8k
                        debug_assert!(state.is::<F>());
1843
23.8k
                        let func = &*(state as *const _ as *const F);
1844
23.8k
1845
23.8k
                        let ret = {
1846
23.8k
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
23.8k
                                    return R::fallible_from_trap(trap);
1849
23.8k
                                }
1850
23.8k
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
23.8k
                                let r = func(
1852
23.8k
                                    caller.sub_caller(),
1853
23.8k
                                    $( $args, )*
1854
23.8k
                                );
1855
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
23.8k
                                    return R::fallible_from_trap(trap);
1857
23.8k
                                }
1858
23.8k
                                r.into_fallible()
1859
23.8k
                            }))
1860
23.8k
                        };
1861
23.8k
1862
23.8k
                        // Note that we need to be careful when dealing with traps
1863
23.8k
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
23.8k
                        // that it's not unwinding and consequently no Rust
1865
23.8k
                        // destructors are run. We need to be careful to ensure that
1866
23.8k
                        // nothing on the stack needs a destructor when we exit
1867
23.8k
                        // abnormally from this `match`, e.g. on `Err`, on
1868
23.8k
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
23.8k
                        match ret {
1870
23.8k
                            Err(panic) => CallResult::Panic(panic),
1871
23.8k
                            Ok(ret) => {
1872
23.8k
                                // Because the wrapped function is not `unsafe`, we
1873
23.8k
                                // can't assume it returned a value that is
1874
23.8k
                                // compatible with this store.
1875
23.8k
                                if !ret.compatible_with_store(caller.store.0) {
1876
23.8k
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
23.8k
                                } else {
1878
23.8k
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
23.8k
                                        Ok(val) => CallResult::Ok(val),
1880
23.8k
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
23.8k
                                    }
1882
23.8k
                                }
1883
23.8k
1884
23.8k
                            }
1885
23.8k
                        }
1886
23.8k
                    });
1887
23.8k
1888
23.8k
                    match result {
1889
23.8k
                        CallResult::Ok(val) => val,
1890
23.8k
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
23.8k
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
23.8k
                    }
1893
23.8k
                }
1894
23.8k
1895
23.8k
                /// This trampoline allows host code to indirectly call the
1896
23.8k
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
23.8k
                /// happens to reference our wrapped function).
1898
23.8k
                ///
1899
23.8k
                /// It reads the arguments out of the incoming `args` array,
1900
23.8k
                /// calls the given function pointer, and then stores the result
1901
23.8k
                /// back into the `args` array.
1902
23.8k
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
23.8k
                    callee_vmctx: *mut VMOpaqueContext,
1904
23.8k
                    caller_vmctx: *mut VMContext,
1905
23.8k
                    ptr: *const VMFunctionBody,
1906
23.8k
                    args: *mut ValRaw,
1907
23.8k
                )
1908
23.8k
                where
1909
23.8k
                    $($args: WasmTy,)*
1910
23.8k
                    R: WasmRet,
1911
23.8k
                {
1912
23.8k
                    let ptr = mem::transmute::<
1913
23.8k
                        *const VMFunctionBody,
1914
23.8k
                        unsafe extern "C" fn(
1915
23.8k
                            *mut VMOpaqueContext,
1916
23.8k
                            *mut VMContext,
1917
23.8k
                            $( $args::Abi, )*
1918
23.8k
                            R::Retptr,
1919
23.8k
                        ) -> R::Abi,
1920
23.8k
                    >(ptr);
1921
23.8k
1922
23.8k
                    let mut _n = 0;
1923
23.8k
                    $(
1924
23.8k
                        let $args = $args::abi_from_raw(args.add(_n));
1925
23.8k
                        _n += 1;
1926
23.8k
                    )*
1927
23.8k
                    R::wrap_trampoline(args, |retptr| {
1928
23.8k
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
23.8k
                    });
1930
23.8k
                }
1931
23.8k
1932
23.8k
                let ty = R::func_type(
1933
23.8k
                    None::<ValType>.into_iter()
1934
23.8k
                        $(.chain(Some($args::valtype())))*
1935
23.8k
                );
1936
23.8k
1937
23.8k
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
23.8k
1939
23.8k
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
23.8k
1941
23.8k
                let ctx = unsafe {
1942
23.8k
                    VMHostFuncContext::new(
1943
23.8k
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
23.8k
                        shared_signature_id,
1945
23.8k
                        Box::new(self),
1946
23.8k
                    )
1947
23.8k
                };
1948
23.8k
1949
23.8k
                (ctx, shared_signature_id, trampoline)
1950
23.8k
            }
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_replica_update<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
23.8k
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
23.8k
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
23.8k
                /// calls the wrapped host function, and returns the translated
1807
23.8k
                /// result back to Wasm.
1808
23.8k
                ///
1809
23.8k
                /// Note that this shim's ABI must *exactly* match that expected
1810
23.8k
                /// by Cranelift, since Cranelift is generating raw function
1811
23.8k
                /// calls directly to this function.
1812
23.8k
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
23.8k
                    vmctx: *mut VMOpaqueContext,
1814
23.8k
                    caller_vmctx: *mut VMContext,
1815
23.8k
                    $( $args: $args::Abi, )*
1816
23.8k
                    retptr: R::Retptr,
1817
23.8k
                ) -> R::Abi
1818
23.8k
                where
1819
23.8k
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
23.8k
                    $( $args: WasmTy, )*
1821
23.8k
                    R: WasmRet,
1822
23.8k
                {
1823
23.8k
                    enum CallResult<U> {
1824
23.8k
                        Ok(U),
1825
23.8k
                        Trap(anyhow::Error),
1826
23.8k
                        Panic(Box<dyn std::any::Any + Send>),
1827
23.8k
                    }
1828
23.8k
1829
23.8k
                    // Note that this `result` is intentionally scoped into a
1830
23.8k
                    // separate block. Handling traps and panics will involve
1831
23.8k
                    // longjmp-ing from this function which means we won't run
1832
23.8k
                    // destructors. As a result anything requiring a destructor
1833
23.8k
                    // should be part of this block, and the long-jmp-ing
1834
23.8k
                    // happens after the block in handling `CallResult`.
1835
23.8k
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
23.8k
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
23.8k
                        let state = (*vmctx).host_state();
1838
23.8k
1839
23.8k
                        // Double-check ourselves in debug mode, but we control
1840
23.8k
                        // the `Any` here so an unsafe downcast should also
1841
23.8k
                        // work.
1842
23.8k
                        debug_assert!(state.is::<F>());
1843
23.8k
                        let func = &*(state as *const _ as *const F);
1844
23.8k
1845
23.8k
                        let ret = {
1846
23.8k
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
23.8k
                                    return R::fallible_from_trap(trap);
1849
23.8k
                                }
1850
23.8k
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
23.8k
                                let r = func(
1852
23.8k
                                    caller.sub_caller(),
1853
23.8k
                                    $( $args, )*
1854
23.8k
                                );
1855
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
23.8k
                                    return R::fallible_from_trap(trap);
1857
23.8k
                                }
1858
23.8k
                                r.into_fallible()
1859
23.8k
                            }))
1860
23.8k
                        };
1861
23.8k
1862
23.8k
                        // Note that we need to be careful when dealing with traps
1863
23.8k
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
23.8k
                        // that it's not unwinding and consequently no Rust
1865
23.8k
                        // destructors are run. We need to be careful to ensure that
1866
23.8k
                        // nothing on the stack needs a destructor when we exit
1867
23.8k
                        // abnormally from this `match`, e.g. on `Err`, on
1868
23.8k
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
23.8k
                        match ret {
1870
23.8k
                            Err(panic) => CallResult::Panic(panic),
1871
23.8k
                            Ok(ret) => {
1872
23.8k
                                // Because the wrapped function is not `unsafe`, we
1873
23.8k
                                // can't assume it returned a value that is
1874
23.8k
                                // compatible with this store.
1875
23.8k
                                if !ret.compatible_with_store(caller.store.0) {
1876
23.8k
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
23.8k
                                } else {
1878
23.8k
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
23.8k
                                        Ok(val) => CallResult::Ok(val),
1880
23.8k
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
23.8k
                                    }
1882
23.8k
                                }
1883
23.8k
1884
23.8k
                            }
1885
23.8k
                        }
1886
23.8k
                    });
1887
23.8k
1888
23.8k
                    match result {
1889
23.8k
                        CallResult::Ok(val) => val,
1890
23.8k
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
23.8k
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
23.8k
                    }
1893
23.8k
                }
1894
23.8k
1895
23.8k
                /// This trampoline allows host code to indirectly call the
1896
23.8k
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
23.8k
                /// happens to reference our wrapped function).
1898
23.8k
                ///
1899
23.8k
                /// It reads the arguments out of the incoming `args` array,
1900
23.8k
                /// calls the given function pointer, and then stores the result
1901
23.8k
                /// back into the `args` array.
1902
23.8k
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
23.8k
                    callee_vmctx: *mut VMOpaqueContext,
1904
23.8k
                    caller_vmctx: *mut VMContext,
1905
23.8k
                    ptr: *const VMFunctionBody,
1906
23.8k
                    args: *mut ValRaw,
1907
23.8k
                )
1908
23.8k
                where
1909
23.8k
                    $($args: WasmTy,)*
1910
23.8k
                    R: WasmRet,
1911
23.8k
                {
1912
23.8k
                    let ptr = mem::transmute::<
1913
23.8k
                        *const VMFunctionBody,
1914
23.8k
                        unsafe extern "C" fn(
1915
23.8k
                            *mut VMOpaqueContext,
1916
23.8k
                            *mut VMContext,
1917
23.8k
                            $( $args::Abi, )*
1918
23.8k
                            R::Retptr,
1919
23.8k
                        ) -> R::Abi,
1920
23.8k
                    >(ptr);
1921
23.8k
1922
23.8k
                    let mut _n = 0;
1923
23.8k
                    $(
1924
23.8k
                        let $args = $args::abi_from_raw(args.add(_n));
1925
23.8k
                        _n += 1;
1926
23.8k
                    )*
1927
23.8k
                    R::wrap_trampoline(args, |retptr| {
1928
23.8k
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
23.8k
                    });
1930
23.8k
                }
1931
23.8k
1932
23.8k
                let ty = R::func_type(
1933
23.8k
                    None::<ValType>.into_iter()
1934
23.8k
                        $(.chain(Some($args::valtype())))*
1935
23.8k
                );
1936
23.8k
1937
23.8k
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
23.8k
1939
23.8k
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
23.8k
1941
23.8k
                let ctx = unsafe {
1942
23.8k
                    VMHostFuncContext::new(
1943
23.8k
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
23.8k
                        shared_signature_id,
1945
23.8k
                        Box::new(self),
1946
23.8k
                    )
1947
23.8k
                };
1948
23.8k
1949
23.8k
                (ctx, shared_signature_id, trampoline)
1950
23.8k
            }
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::lookup_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u64, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_seal<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::self_destruct<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
23.8k
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
23.8k
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
23.8k
                /// calls the wrapped host function, and returns the translated
1807
23.8k
                /// result back to Wasm.
1808
23.8k
                ///
1809
23.8k
                /// Note that this shim's ABI must *exactly* match that expected
1810
23.8k
                /// by Cranelift, since Cranelift is generating raw function
1811
23.8k
                /// calls directly to this function.
1812
23.8k
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
23.8k
                    vmctx: *mut VMOpaqueContext,
1814
23.8k
                    caller_vmctx: *mut VMContext,
1815
23.8k
                    $( $args: $args::Abi, )*
1816
23.8k
                    retptr: R::Retptr,
1817
23.8k
                ) -> R::Abi
1818
23.8k
                where
1819
23.8k
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
23.8k
                    $( $args: WasmTy, )*
1821
23.8k
                    R: WasmRet,
1822
23.8k
                {
1823
23.8k
                    enum CallResult<U> {
1824
23.8k
                        Ok(U),
1825
23.8k
                        Trap(anyhow::Error),
1826
23.8k
                        Panic(Box<dyn std::any::Any + Send>),
1827
23.8k
                    }
1828
23.8k
1829
23.8k
                    // Note that this `result` is intentionally scoped into a
1830
23.8k
                    // separate block. Handling traps and panics will involve
1831
23.8k
                    // longjmp-ing from this function which means we won't run
1832
23.8k
                    // destructors. As a result anything requiring a destructor
1833
23.8k
                    // should be part of this block, and the long-jmp-ing
1834
23.8k
                    // happens after the block in handling `CallResult`.
1835
23.8k
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
23.8k
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
23.8k
                        let state = (*vmctx).host_state();
1838
23.8k
1839
23.8k
                        // Double-check ourselves in debug mode, but we control
1840
23.8k
                        // the `Any` here so an unsafe downcast should also
1841
23.8k
                        // work.
1842
23.8k
                        debug_assert!(state.is::<F>());
1843
23.8k
                        let func = &*(state as *const _ as *const F);
1844
23.8k
1845
23.8k
                        let ret = {
1846
23.8k
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
23.8k
                                    return R::fallible_from_trap(trap);
1849
23.8k
                                }
1850
23.8k
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
23.8k
                                let r = func(
1852
23.8k
                                    caller.sub_caller(),
1853
23.8k
                                    $( $args, )*
1854
23.8k
                                );
1855
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
23.8k
                                    return R::fallible_from_trap(trap);
1857
23.8k
                                }
1858
23.8k
                                r.into_fallible()
1859
23.8k
                            }))
1860
23.8k
                        };
1861
23.8k
1862
23.8k
                        // Note that we need to be careful when dealing with traps
1863
23.8k
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
23.8k
                        // that it's not unwinding and consequently no Rust
1865
23.8k
                        // destructors are run. We need to be careful to ensure that
1866
23.8k
                        // nothing on the stack needs a destructor when we exit
1867
23.8k
                        // abnormally from this `match`, e.g. on `Err`, on
1868
23.8k
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
23.8k
                        match ret {
1870
23.8k
                            Err(panic) => CallResult::Panic(panic),
1871
23.8k
                            Ok(ret) => {
1872
23.8k
                                // Because the wrapped function is not `unsafe`, we
1873
23.8k
                                // can't assume it returned a value that is
1874
23.8k
                                // compatible with this store.
1875
23.8k
                                if !ret.compatible_with_store(caller.store.0) {
1876
23.8k
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
23.8k
                                } else {
1878
23.8k
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
23.8k
                                        Ok(val) => CallResult::Ok(val),
1880
23.8k
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
23.8k
                                    }
1882
23.8k
                                }
1883
23.8k
1884
23.8k
                            }
1885
23.8k
                        }
1886
23.8k
                    });
1887
23.8k
1888
23.8k
                    match result {
1889
23.8k
                        CallResult::Ok(val) => val,
1890
23.8k
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
23.8k
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
23.8k
                    }
1893
23.8k
                }
1894
23.8k
1895
23.8k
                /// This trampoline allows host code to indirectly call the
1896
23.8k
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
23.8k
                /// happens to reference our wrapped function).
1898
23.8k
                ///
1899
23.8k
                /// It reads the arguments out of the incoming `args` array,
1900
23.8k
                /// calls the given function pointer, and then stores the result
1901
23.8k
                /// back into the `args` array.
1902
23.8k
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
23.8k
                    callee_vmctx: *mut VMOpaqueContext,
1904
23.8k
                    caller_vmctx: *mut VMContext,
1905
23.8k
                    ptr: *const VMFunctionBody,
1906
23.8k
                    args: *mut ValRaw,
1907
23.8k
                )
1908
23.8k
                where
1909
23.8k
                    $($args: WasmTy,)*
1910
23.8k
                    R: WasmRet,
1911
23.8k
                {
1912
23.8k
                    let ptr = mem::transmute::<
1913
23.8k
                        *const VMFunctionBody,
1914
23.8k
                        unsafe extern "C" fn(
1915
23.8k
                            *mut VMOpaqueContext,
1916
23.8k
                            *mut VMContext,
1917
23.8k
                            $( $args::Abi, )*
1918
23.8k
                            R::Retptr,
1919
23.8k
                        ) -> R::Abi,
1920
23.8k
                    >(ptr);
1921
23.8k
1922
23.8k
                    let mut _n = 0;
1923
23.8k
                    $(
1924
23.8k
                        let $args = $args::abi_from_raw(args.add(_n));
1925
23.8k
                        _n += 1;
1926
23.8k
                    )*
1927
23.8k
                    R::wrap_trampoline(args, |retptr| {
1928
23.8k
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
23.8k
                    });
1930
23.8k
                }
1931
23.8k
1932
23.8k
                let ty = R::func_type(
1933
23.8k
                    None::<ValType>.into_iter()
1934
23.8k
                        $(.chain(Some($args::valtype())))*
1935
23.8k
                );
1936
23.8k
1937
23.8k
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
23.8k
1939
23.8k
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
23.8k
1941
23.8k
                let ctx = unsafe {
1942
23.8k
                    VMHostFuncContext::new(
1943
23.8k
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
23.8k
                        shared_signature_id,
1945
23.8k
                        Box::new(self),
1946
23.8k
                    )
1947
23.8k
                };
1948
23.8k
1949
23.8k
                (ctx, shared_signature_id, trampoline)
1950
23.8k
            }
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, i64), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::gas::charge_gas<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, i64), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
23.8k
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
23.8k
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
23.8k
                /// calls the wrapped host function, and returns the translated
1807
23.8k
                /// result back to Wasm.
1808
23.8k
                ///
1809
23.8k
                /// Note that this shim's ABI must *exactly* match that expected
1810
23.8k
                /// by Cranelift, since Cranelift is generating raw function
1811
23.8k
                /// calls directly to this function.
1812
23.8k
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
23.8k
                    vmctx: *mut VMOpaqueContext,
1814
23.8k
                    caller_vmctx: *mut VMContext,
1815
23.8k
                    $( $args: $args::Abi, )*
1816
23.8k
                    retptr: R::Retptr,
1817
23.8k
                ) -> R::Abi
1818
23.8k
                where
1819
23.8k
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
23.8k
                    $( $args: WasmTy, )*
1821
23.8k
                    R: WasmRet,
1822
23.8k
                {
1823
23.8k
                    enum CallResult<U> {
1824
23.8k
                        Ok(U),
1825
23.8k
                        Trap(anyhow::Error),
1826
23.8k
                        Panic(Box<dyn std::any::Any + Send>),
1827
23.8k
                    }
1828
23.8k
1829
23.8k
                    // Note that this `result` is intentionally scoped into a
1830
23.8k
                    // separate block. Handling traps and panics will involve
1831
23.8k
                    // longjmp-ing from this function which means we won't run
1832
23.8k
                    // destructors. As a result anything requiring a destructor
1833
23.8k
                    // should be part of this block, and the long-jmp-ing
1834
23.8k
                    // happens after the block in handling `CallResult`.
1835
23.8k
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
23.8k
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
23.8k
                        let state = (*vmctx).host_state();
1838
23.8k
1839
23.8k
                        // Double-check ourselves in debug mode, but we control
1840
23.8k
                        // the `Any` here so an unsafe downcast should also
1841
23.8k
                        // work.
1842
23.8k
                        debug_assert!(state.is::<F>());
1843
23.8k
                        let func = &*(state as *const _ as *const F);
1844
23.8k
1845
23.8k
                        let ret = {
1846
23.8k
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
23.8k
                                    return R::fallible_from_trap(trap);
1849
23.8k
                                }
1850
23.8k
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
23.8k
                                let r = func(
1852
23.8k
                                    caller.sub_caller(),
1853
23.8k
                                    $( $args, )*
1854
23.8k
                                );
1855
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
23.8k
                                    return R::fallible_from_trap(trap);
1857
23.8k
                                }
1858
23.8k
                                r.into_fallible()
1859
23.8k
                            }))
1860
23.8k
                        };
1861
23.8k
1862
23.8k
                        // Note that we need to be careful when dealing with traps
1863
23.8k
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
23.8k
                        // that it's not unwinding and consequently no Rust
1865
23.8k
                        // destructors are run. We need to be careful to ensure that
1866
23.8k
                        // nothing on the stack needs a destructor when we exit
1867
23.8k
                        // abnormally from this `match`, e.g. on `Err`, on
1868
23.8k
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
23.8k
                        match ret {
1870
23.8k
                            Err(panic) => CallResult::Panic(panic),
1871
23.8k
                            Ok(ret) => {
1872
23.8k
                                // Because the wrapped function is not `unsafe`, we
1873
23.8k
                                // can't assume it returned a value that is
1874
23.8k
                                // compatible with this store.
1875
23.8k
                                if !ret.compatible_with_store(caller.store.0) {
1876
23.8k
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
23.8k
                                } else {
1878
23.8k
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
23.8k
                                        Ok(val) => CallResult::Ok(val),
1880
23.8k
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
23.8k
                                    }
1882
23.8k
                                }
1883
23.8k
1884
23.8k
                            }
1885
23.8k
                        }
1886
23.8k
                    });
1887
23.8k
1888
23.8k
                    match result {
1889
23.8k
                        CallResult::Ok(val) => val,
1890
23.8k
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
23.8k
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
23.8k
                    }
1893
23.8k
                }
1894
23.8k
1895
23.8k
                /// This trampoline allows host code to indirectly call the
1896
23.8k
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
23.8k
                /// happens to reference our wrapped function).
1898
23.8k
                ///
1899
23.8k
                /// It reads the arguments out of the incoming `args` array,
1900
23.8k
                /// calls the given function pointer, and then stores the result
1901
23.8k
                /// back into the `args` array.
1902
23.8k
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
23.8k
                    callee_vmctx: *mut VMOpaqueContext,
1904
23.8k
                    caller_vmctx: *mut VMContext,
1905
23.8k
                    ptr: *const VMFunctionBody,
1906
23.8k
                    args: *mut ValRaw,
1907
23.8k
                )
1908
23.8k
                where
1909
23.8k
                    $($args: WasmTy,)*
1910
23.8k
                    R: WasmRet,
1911
23.8k
                {
1912
23.8k
                    let ptr = mem::transmute::<
1913
23.8k
                        *const VMFunctionBody,
1914
23.8k
                        unsafe extern "C" fn(
1915
23.8k
                            *mut VMOpaqueContext,
1916
23.8k
                            *mut VMContext,
1917
23.8k
                            $( $args::Abi, )*
1918
23.8k
                            R::Retptr,
1919
23.8k
                        ) -> R::Abi,
1920
23.8k
                    >(ptr);
1921
23.8k
1922
23.8k
                    let mut _n = 0;
1923
23.8k
                    $(
1924
23.8k
                        let $args = $args::abi_from_raw(args.add(_n));
1925
23.8k
                        _n += 1;
1926
23.8k
                    )*
1927
23.8k
                    R::wrap_trampoline(args, |retptr| {
1928
23.8k
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
23.8k
                    });
1930
23.8k
                }
1931
23.8k
1932
23.8k
                let ty = R::func_type(
1933
23.8k
                    None::<ValType>.into_iter()
1934
23.8k
                        $(.chain(Some($args::valtype())))*
1935
23.8k
                );
1936
23.8k
1937
23.8k
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
23.8k
1939
23.8k
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
23.8k
1941
23.8k
                let ctx = unsafe {
1942
23.8k
                    VMHostFuncContext::new(
1943
23.8k
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
23.8k
                        shared_signature_id,
1945
23.8k
                        Box::new(self),
1946
23.8k
                    )
1947
23.8k
                };
1948
23.8k
1949
23.8k
                (ctx, shared_signature_id, trampoline)
1950
23.8k
            }
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<fvm::syscalls::vm::Never, fvm::syscalls::error::Abort>, fvm::syscalls::vm::exit<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64,), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::balance_of<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u64), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
23.8k
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
23.8k
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
23.8k
                /// calls the wrapped host function, and returns the translated
1807
23.8k
                /// result back to Wasm.
1808
23.8k
                ///
1809
23.8k
                /// Note that this shim's ABI must *exactly* match that expected
1810
23.8k
                /// by Cranelift, since Cranelift is generating raw function
1811
23.8k
                /// calls directly to this function.
1812
23.8k
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
23.8k
                    vmctx: *mut VMOpaqueContext,
1814
23.8k
                    caller_vmctx: *mut VMContext,
1815
23.8k
                    $( $args: $args::Abi, )*
1816
23.8k
                    retptr: R::Retptr,
1817
23.8k
                ) -> R::Abi
1818
23.8k
                where
1819
23.8k
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
23.8k
                    $( $args: WasmTy, )*
1821
23.8k
                    R: WasmRet,
1822
23.8k
                {
1823
23.8k
                    enum CallResult<U> {
1824
23.8k
                        Ok(U),
1825
23.8k
                        Trap(anyhow::Error),
1826
23.8k
                        Panic(Box<dyn std::any::Any + Send>),
1827
23.8k
                    }
1828
23.8k
1829
23.8k
                    // Note that this `result` is intentionally scoped into a
1830
23.8k
                    // separate block. Handling traps and panics will involve
1831
23.8k
                    // longjmp-ing from this function which means we won't run
1832
23.8k
                    // destructors. As a result anything requiring a destructor
1833
23.8k
                    // should be part of this block, and the long-jmp-ing
1834
23.8k
                    // happens after the block in handling `CallResult`.
1835
23.8k
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
23.8k
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
23.8k
                        let state = (*vmctx).host_state();
1838
23.8k
1839
23.8k
                        // Double-check ourselves in debug mode, but we control
1840
23.8k
                        // the `Any` here so an unsafe downcast should also
1841
23.8k
                        // work.
1842
23.8k
                        debug_assert!(state.is::<F>());
1843
23.8k
                        let func = &*(state as *const _ as *const F);
1844
23.8k
1845
23.8k
                        let ret = {
1846
23.8k
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
23.8k
                                    return R::fallible_from_trap(trap);
1849
23.8k
                                }
1850
23.8k
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
23.8k
                                let r = func(
1852
23.8k
                                    caller.sub_caller(),
1853
23.8k
                                    $( $args, )*
1854
23.8k
                                );
1855
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
23.8k
                                    return R::fallible_from_trap(trap);
1857
23.8k
                                }
1858
23.8k
                                r.into_fallible()
1859
23.8k
                            }))
1860
23.8k
                        };
1861
23.8k
1862
23.8k
                        // Note that we need to be careful when dealing with traps
1863
23.8k
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
23.8k
                        // that it's not unwinding and consequently no Rust
1865
23.8k
                        // destructors are run. We need to be careful to ensure that
1866
23.8k
                        // nothing on the stack needs a destructor when we exit
1867
23.8k
                        // abnormally from this `match`, e.g. on `Err`, on
1868
23.8k
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
23.8k
                        match ret {
1870
23.8k
                            Err(panic) => CallResult::Panic(panic),
1871
23.8k
                            Ok(ret) => {
1872
23.8k
                                // Because the wrapped function is not `unsafe`, we
1873
23.8k
                                // can't assume it returned a value that is
1874
23.8k
                                // compatible with this store.
1875
23.8k
                                if !ret.compatible_with_store(caller.store.0) {
1876
23.8k
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
23.8k
                                } else {
1878
23.8k
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
23.8k
                                        Ok(val) => CallResult::Ok(val),
1880
23.8k
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
23.8k
                                    }
1882
23.8k
                                }
1883
23.8k
1884
23.8k
                            }
1885
23.8k
                        }
1886
23.8k
                    });
1887
23.8k
1888
23.8k
                    match result {
1889
23.8k
                        CallResult::Ok(val) => val,
1890
23.8k
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
23.8k
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
23.8k
                    }
1893
23.8k
                }
1894
23.8k
1895
23.8k
                /// This trampoline allows host code to indirectly call the
1896
23.8k
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
23.8k
                /// happens to reference our wrapped function).
1898
23.8k
                ///
1899
23.8k
                /// It reads the arguments out of the incoming `args` array,
1900
23.8k
                /// calls the given function pointer, and then stores the result
1901
23.8k
                /// back into the `args` array.
1902
23.8k
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
23.8k
                    callee_vmctx: *mut VMOpaqueContext,
1904
23.8k
                    caller_vmctx: *mut VMContext,
1905
23.8k
                    ptr: *const VMFunctionBody,
1906
23.8k
                    args: *mut ValRaw,
1907
23.8k
                )
1908
23.8k
                where
1909
23.8k
                    $($args: WasmTy,)*
1910
23.8k
                    R: WasmRet,
1911
23.8k
                {
1912
23.8k
                    let ptr = mem::transmute::<
1913
23.8k
                        *const VMFunctionBody,
1914
23.8k
                        unsafe extern "C" fn(
1915
23.8k
                            *mut VMOpaqueContext,
1916
23.8k
                            *mut VMContext,
1917
23.8k
                            $( $args::Abi, )*
1918
23.8k
                            R::Retptr,
1919
23.8k
                        ) -> R::Abi,
1920
23.8k
                    >(ptr);
1921
23.8k
1922
23.8k
                    let mut _n = 0;
1923
23.8k
                    $(
1924
23.8k
                        let $args = $args::abi_from_raw(args.add(_n));
1925
23.8k
                        _n += 1;
1926
23.8k
                    )*
1927
23.8k
                    R::wrap_trampoline(args, |retptr| {
1928
23.8k
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
23.8k
                    });
1930
23.8k
                }
1931
23.8k
1932
23.8k
                let ty = R::func_type(
1933
23.8k
                    None::<ValType>.into_iter()
1934
23.8k
                        $(.chain(Some($args::valtype())))*
1935
23.8k
                );
1936
23.8k
1937
23.8k
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
23.8k
1939
23.8k
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
23.8k
1941
23.8k
                let ctx = unsafe {
1942
23.8k
                    VMHostFuncContext::new(
1943
23.8k
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
23.8k
                        shared_signature_id,
1945
23.8k
                        Box::new(self),
1946
23.8k
                    )
1947
23.8k
                };
1948
23.8k
1949
23.8k
                (ctx, shared_signature_id, trampoline)
1950
23.8k
            }
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::hash<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u64, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u64, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_link<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u64, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<fvm_shared::sys::out::ipld::IpldStat, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_stat<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_aggregate_seals<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
23.8k
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
23.8k
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
23.8k
                /// calls the wrapped host function, and returns the translated
1807
23.8k
                /// result back to Wasm.
1808
23.8k
                ///
1809
23.8k
                /// Note that this shim's ABI must *exactly* match that expected
1810
23.8k
                /// by Cranelift, since Cranelift is generating raw function
1811
23.8k
                /// calls directly to this function.
1812
23.8k
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
23.8k
                    vmctx: *mut VMOpaqueContext,
1814
23.8k
                    caller_vmctx: *mut VMContext,
1815
23.8k
                    $( $args: $args::Abi, )*
1816
23.8k
                    retptr: R::Retptr,
1817
23.8k
                ) -> R::Abi
1818
23.8k
                where
1819
23.8k
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
23.8k
                    $( $args: WasmTy, )*
1821
23.8k
                    R: WasmRet,
1822
23.8k
                {
1823
23.8k
                    enum CallResult<U> {
1824
23.8k
                        Ok(U),
1825
23.8k
                        Trap(anyhow::Error),
1826
23.8k
                        Panic(Box<dyn std::any::Any + Send>),
1827
23.8k
                    }
1828
23.8k
1829
23.8k
                    // Note that this `result` is intentionally scoped into a
1830
23.8k
                    // separate block. Handling traps and panics will involve
1831
23.8k
                    // longjmp-ing from this function which means we won't run
1832
23.8k
                    // destructors. As a result anything requiring a destructor
1833
23.8k
                    // should be part of this block, and the long-jmp-ing
1834
23.8k
                    // happens after the block in handling `CallResult`.
1835
23.8k
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
23.8k
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
23.8k
                        let state = (*vmctx).host_state();
1838
23.8k
1839
23.8k
                        // Double-check ourselves in debug mode, but we control
1840
23.8k
                        // the `Any` here so an unsafe downcast should also
1841
23.8k
                        // work.
1842
23.8k
                        debug_assert!(state.is::<F>());
1843
23.8k
                        let func = &*(state as *const _ as *const F);
1844
23.8k
1845
23.8k
                        let ret = {
1846
23.8k
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
23.8k
                                    return R::fallible_from_trap(trap);
1849
23.8k
                                }
1850
23.8k
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
23.8k
                                let r = func(
1852
23.8k
                                    caller.sub_caller(),
1853
23.8k
                                    $( $args, )*
1854
23.8k
                                );
1855
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
23.8k
                                    return R::fallible_from_trap(trap);
1857
23.8k
                                }
1858
23.8k
                                r.into_fallible()
1859
23.8k
                            }))
1860
23.8k
                        };
1861
23.8k
1862
23.8k
                        // Note that we need to be careful when dealing with traps
1863
23.8k
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
23.8k
                        // that it's not unwinding and consequently no Rust
1865
23.8k
                        // destructors are run. We need to be careful to ensure that
1866
23.8k
                        // nothing on the stack needs a destructor when we exit
1867
23.8k
                        // abnormally from this `match`, e.g. on `Err`, on
1868
23.8k
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
23.8k
                        match ret {
1870
23.8k
                            Err(panic) => CallResult::Panic(panic),
1871
23.8k
                            Ok(ret) => {
1872
23.8k
                                // Because the wrapped function is not `unsafe`, we
1873
23.8k
                                // can't assume it returned a value that is
1874
23.8k
                                // compatible with this store.
1875
23.8k
                                if !ret.compatible_with_store(caller.store.0) {
1876
23.8k
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
23.8k
                                } else {
1878
23.8k
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
23.8k
                                        Ok(val) => CallResult::Ok(val),
1880
23.8k
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
23.8k
                                    }
1882
23.8k
                                }
1883
23.8k
1884
23.8k
                            }
1885
23.8k
                        }
1886
23.8k
                    });
1887
23.8k
1888
23.8k
                    match result {
1889
23.8k
                        CallResult::Ok(val) => val,
1890
23.8k
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
23.8k
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
23.8k
                    }
1893
23.8k
                }
1894
23.8k
1895
23.8k
                /// This trampoline allows host code to indirectly call the
1896
23.8k
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
23.8k
                /// happens to reference our wrapped function).
1898
23.8k
                ///
1899
23.8k
                /// It reads the arguments out of the incoming `args` array,
1900
23.8k
                /// calls the given function pointer, and then stores the result
1901
23.8k
                /// back into the `args` array.
1902
23.8k
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
23.8k
                    callee_vmctx: *mut VMOpaqueContext,
1904
23.8k
                    caller_vmctx: *mut VMContext,
1905
23.8k
                    ptr: *const VMFunctionBody,
1906
23.8k
                    args: *mut ValRaw,
1907
23.8k
                )
1908
23.8k
                where
1909
23.8k
                    $($args: WasmTy,)*
1910
23.8k
                    R: WasmRet,
1911
23.8k
                {
1912
23.8k
                    let ptr = mem::transmute::<
1913
23.8k
                        *const VMFunctionBody,
1914
23.8k
                        unsafe extern "C" fn(
1915
23.8k
                            *mut VMOpaqueContext,
1916
23.8k
                            *mut VMContext,
1917
23.8k
                            $( $args::Abi, )*
1918
23.8k
                            R::Retptr,
1919
23.8k
                        ) -> R::Abi,
1920
23.8k
                    >(ptr);
1921
23.8k
1922
23.8k
                    let mut _n = 0;
1923
23.8k
                    $(
1924
23.8k
                        let $args = $args::abi_from_raw(args.add(_n));
1925
23.8k
                        _n += 1;
1926
23.8k
                    )*
1927
23.8k
                    R::wrap_trampoline(args, |retptr| {
1928
23.8k
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
23.8k
                    });
1930
23.8k
                }
1931
23.8k
1932
23.8k
                let ty = R::func_type(
1933
23.8k
                    None::<ValType>.into_iter()
1934
23.8k
                        $(.chain(Some($args::valtype())))*
1935
23.8k
                );
1936
23.8k
1937
23.8k
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
23.8k
1939
23.8k
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
23.8k
1941
23.8k
                let ctx = unsafe {
1942
23.8k
                    VMHostFuncContext::new(
1943
23.8k
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
23.8k
                        shared_signature_id,
1945
23.8k
                        Box::new(self),
1946
23.8k
                    )
1947
23.8k
                };
1948
23.8k
1949
23.8k
                (ctx, shared_signature_id, trampoline)
1950
23.8k
            }
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::batch_verify_seals<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_actor_code_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u64, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::set_root<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
23.8k
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
23.8k
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
23.8k
                /// calls the wrapped host function, and returns the translated
1807
23.8k
                /// result back to Wasm.
1808
23.8k
                ///
1809
23.8k
                /// Note that this shim's ABI must *exactly* match that expected
1810
23.8k
                /// by Cranelift, since Cranelift is generating raw function
1811
23.8k
                /// calls directly to this function.
1812
23.8k
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
23.8k
                    vmctx: *mut VMOpaqueContext,
1814
23.8k
                    caller_vmctx: *mut VMContext,
1815
23.8k
                    $( $args: $args::Abi, )*
1816
23.8k
                    retptr: R::Retptr,
1817
23.8k
                ) -> R::Abi
1818
23.8k
                where
1819
23.8k
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
23.8k
                    $( $args: WasmTy, )*
1821
23.8k
                    R: WasmRet,
1822
23.8k
                {
1823
23.8k
                    enum CallResult<U> {
1824
23.8k
                        Ok(U),
1825
23.8k
                        Trap(anyhow::Error),
1826
23.8k
                        Panic(Box<dyn std::any::Any + Send>),
1827
23.8k
                    }
1828
23.8k
1829
23.8k
                    // Note that this `result` is intentionally scoped into a
1830
23.8k
                    // separate block. Handling traps and panics will involve
1831
23.8k
                    // longjmp-ing from this function which means we won't run
1832
23.8k
                    // destructors. As a result anything requiring a destructor
1833
23.8k
                    // should be part of this block, and the long-jmp-ing
1834
23.8k
                    // happens after the block in handling `CallResult`.
1835
23.8k
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
23.8k
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
23.8k
                        let state = (*vmctx).host_state();
1838
23.8k
1839
23.8k
                        // Double-check ourselves in debug mode, but we control
1840
23.8k
                        // the `Any` here so an unsafe downcast should also
1841
23.8k
                        // work.
1842
23.8k
                        debug_assert!(state.is::<F>());
1843
23.8k
                        let func = &*(state as *const _ as *const F);
1844
23.8k
1845
23.8k
                        let ret = {
1846
23.8k
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
23.8k
                                    return R::fallible_from_trap(trap);
1849
23.8k
                                }
1850
23.8k
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
23.8k
                                let r = func(
1852
23.8k
                                    caller.sub_caller(),
1853
23.8k
                                    $( $args, )*
1854
23.8k
                                );
1855
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
23.8k
                                    return R::fallible_from_trap(trap);
1857
23.8k
                                }
1858
23.8k
                                r.into_fallible()
1859
23.8k
                            }))
1860
23.8k
                        };
1861
23.8k
1862
23.8k
                        // Note that we need to be careful when dealing with traps
1863
23.8k
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
23.8k
                        // that it's not unwinding and consequently no Rust
1865
23.8k
                        // destructors are run. We need to be careful to ensure that
1866
23.8k
                        // nothing on the stack needs a destructor when we exit
1867
23.8k
                        // abnormally from this `match`, e.g. on `Err`, on
1868
23.8k
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
23.8k
                        match ret {
1870
23.8k
                            Err(panic) => CallResult::Panic(panic),
1871
23.8k
                            Ok(ret) => {
1872
23.8k
                                // Because the wrapped function is not `unsafe`, we
1873
23.8k
                                // can't assume it returned a value that is
1874
23.8k
                                // compatible with this store.
1875
23.8k
                                if !ret.compatible_with_store(caller.store.0) {
1876
23.8k
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
23.8k
                                } else {
1878
23.8k
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
23.8k
                                        Ok(val) => CallResult::Ok(val),
1880
23.8k
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
23.8k
                                    }
1882
23.8k
                                }
1883
23.8k
1884
23.8k
                            }
1885
23.8k
                        }
1886
23.8k
                    });
1887
23.8k
1888
23.8k
                    match result {
1889
23.8k
                        CallResult::Ok(val) => val,
1890
23.8k
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
23.8k
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
23.8k
                    }
1893
23.8k
                }
1894
23.8k
1895
23.8k
                /// This trampoline allows host code to indirectly call the
1896
23.8k
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
23.8k
                /// happens to reference our wrapped function).
1898
23.8k
                ///
1899
23.8k
                /// It reads the arguments out of the incoming `args` array,
1900
23.8k
                /// calls the given function pointer, and then stores the result
1901
23.8k
                /// back into the `args` array.
1902
23.8k
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
23.8k
                    callee_vmctx: *mut VMOpaqueContext,
1904
23.8k
                    caller_vmctx: *mut VMContext,
1905
23.8k
                    ptr: *const VMFunctionBody,
1906
23.8k
                    args: *mut ValRaw,
1907
23.8k
                )
1908
23.8k
                where
1909
23.8k
                    $($args: WasmTy,)*
1910
23.8k
                    R: WasmRet,
1911
23.8k
                {
1912
23.8k
                    let ptr = mem::transmute::<
1913
23.8k
                        *const VMFunctionBody,
1914
23.8k
                        unsafe extern "C" fn(
1915
23.8k
                            *mut VMOpaqueContext,
1916
23.8k
                            *mut VMContext,
1917
23.8k
                            $( $args::Abi, )*
1918
23.8k
                            R::Retptr,
1919
23.8k
                        ) -> R::Abi,
1920
23.8k
                    >(ptr);
1921
23.8k
1922
23.8k
                    let mut _n = 0;
1923
23.8k
                    $(
1924
23.8k
                        let $args = $args::abi_from_raw(args.add(_n));
1925
23.8k
                        _n += 1;
1926
23.8k
                    )*
1927
23.8k
                    R::wrap_trampoline(args, |retptr| {
1928
23.8k
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
23.8k
                    });
1930
23.8k
                }
1931
23.8k
1932
23.8k
                let ty = R::func_type(
1933
23.8k
                    None::<ValType>.into_iter()
1934
23.8k
                        $(.chain(Some($args::valtype())))*
1935
23.8k
                );
1936
23.8k
1937
23.8k
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
23.8k
1939
23.8k
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
23.8k
1941
23.8k
                let ctx = unsafe {
1942
23.8k
                    VMHostFuncContext::new(
1943
23.8k
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
23.8k
                        shared_signature_id,
1945
23.8k
                        Box::new(self),
1946
23.8k
                    )
1947
23.8k
                };
1948
23.8k
1949
23.8k
                (ctx, shared_signature_id, trampoline)
1950
23.8k
            }
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::lookup_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u64, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
23.8k
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
23.8k
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
23.8k
                /// calls the wrapped host function, and returns the translated
1807
23.8k
                /// result back to Wasm.
1808
23.8k
                ///
1809
23.8k
                /// Note that this shim's ABI must *exactly* match that expected
1810
23.8k
                /// by Cranelift, since Cranelift is generating raw function
1811
23.8k
                /// calls directly to this function.
1812
23.8k
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
23.8k
                    vmctx: *mut VMOpaqueContext,
1814
23.8k
                    caller_vmctx: *mut VMContext,
1815
23.8k
                    $( $args: $args::Abi, )*
1816
23.8k
                    retptr: R::Retptr,
1817
23.8k
                ) -> R::Abi
1818
23.8k
                where
1819
23.8k
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
23.8k
                    $( $args: WasmTy, )*
1821
23.8k
                    R: WasmRet,
1822
23.8k
                {
1823
23.8k
                    enum CallResult<U> {
1824
23.8k
                        Ok(U),
1825
23.8k
                        Trap(anyhow::Error),
1826
23.8k
                        Panic(Box<dyn std::any::Any + Send>),
1827
23.8k
                    }
1828
23.8k
1829
23.8k
                    // Note that this `result` is intentionally scoped into a
1830
23.8k
                    // separate block. Handling traps and panics will involve
1831
23.8k
                    // longjmp-ing from this function which means we won't run
1832
23.8k
                    // destructors. As a result anything requiring a destructor
1833
23.8k
                    // should be part of this block, and the long-jmp-ing
1834
23.8k
                    // happens after the block in handling `CallResult`.
1835
23.8k
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
23.8k
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
23.8k
                        let state = (*vmctx).host_state();
1838
23.8k
1839
23.8k
                        // Double-check ourselves in debug mode, but we control
1840
23.8k
                        // the `Any` here so an unsafe downcast should also
1841
23.8k
                        // work.
1842
23.8k
                        debug_assert!(state.is::<F>());
1843
23.8k
                        let func = &*(state as *const _ as *const F);
1844
23.8k
1845
23.8k
                        let ret = {
1846
23.8k
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
23.8k
                                    return R::fallible_from_trap(trap);
1849
23.8k
                                }
1850
23.8k
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
23.8k
                                let r = func(
1852
23.8k
                                    caller.sub_caller(),
1853
23.8k
                                    $( $args, )*
1854
23.8k
                                );
1855
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
23.8k
                                    return R::fallible_from_trap(trap);
1857
23.8k
                                }
1858
23.8k
                                r.into_fallible()
1859
23.8k
                            }))
1860
23.8k
                        };
1861
23.8k
1862
23.8k
                        // Note that we need to be careful when dealing with traps
1863
23.8k
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
23.8k
                        // that it's not unwinding and consequently no Rust
1865
23.8k
                        // destructors are run. We need to be careful to ensure that
1866
23.8k
                        // nothing on the stack needs a destructor when we exit
1867
23.8k
                        // abnormally from this `match`, e.g. on `Err`, on
1868
23.8k
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
23.8k
                        match ret {
1870
23.8k
                            Err(panic) => CallResult::Panic(panic),
1871
23.8k
                            Ok(ret) => {
1872
23.8k
                                // Because the wrapped function is not `unsafe`, we
1873
23.8k
                                // can't assume it returned a value that is
1874
23.8k
                                // compatible with this store.
1875
23.8k
                                if !ret.compatible_with_store(caller.store.0) {
1876
23.8k
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
23.8k
                                } else {
1878
23.8k
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
23.8k
                                        Ok(val) => CallResult::Ok(val),
1880
23.8k
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
23.8k
                                    }
1882
23.8k
                                }
1883
23.8k
1884
23.8k
                            }
1885
23.8k
                        }
1886
23.8k
                    });
1887
23.8k
1888
23.8k
                    match result {
1889
23.8k
                        CallResult::Ok(val) => val,
1890
23.8k
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
23.8k
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
23.8k
                    }
1893
23.8k
                }
1894
23.8k
1895
23.8k
                /// This trampoline allows host code to indirectly call the
1896
23.8k
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
23.8k
                /// happens to reference our wrapped function).
1898
23.8k
                ///
1899
23.8k
                /// It reads the arguments out of the incoming `args` array,
1900
23.8k
                /// calls the given function pointer, and then stores the result
1901
23.8k
                /// back into the `args` array.
1902
23.8k
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
23.8k
                    callee_vmctx: *mut VMOpaqueContext,
1904
23.8k
                    caller_vmctx: *mut VMContext,
1905
23.8k
                    ptr: *const VMFunctionBody,
1906
23.8k
                    args: *mut ValRaw,
1907
23.8k
                )
1908
23.8k
                where
1909
23.8k
                    $($args: WasmTy,)*
1910
23.8k
                    R: WasmRet,
1911
23.8k
                {
1912
23.8k
                    let ptr = mem::transmute::<
1913
23.8k
                        *const VMFunctionBody,
1914
23.8k
                        unsafe extern "C" fn(
1915
23.8k
                            *mut VMOpaqueContext,
1916
23.8k
                            *mut VMContext,
1917
23.8k
                            $( $args::Abi, )*
1918
23.8k
                            R::Retptr,
1919
23.8k
                        ) -> R::Abi,
1920
23.8k
                    >(ptr);
1921
23.8k
1922
23.8k
                    let mut _n = 0;
1923
23.8k
                    $(
1924
23.8k
                        let $args = $args::abi_from_raw(args.add(_n));
1925
23.8k
                        _n += 1;
1926
23.8k
                    )*
1927
23.8k
                    R::wrap_trampoline(args, |retptr| {
1928
23.8k
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
23.8k
                    });
1930
23.8k
                }
1931
23.8k
1932
23.8k
                let ty = R::func_type(
1933
23.8k
                    None::<ValType>.into_iter()
1934
23.8k
                        $(.chain(Some($args::valtype())))*
1935
23.8k
                );
1936
23.8k
1937
23.8k
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
23.8k
1939
23.8k
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
23.8k
1941
23.8k
                let ctx = unsafe {
1942
23.8k
                    VMHostFuncContext::new(
1943
23.8k
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
23.8k
                        shared_signature_id,
1945
23.8k
                        Box::new(self),
1946
23.8k
                    )
1947
23.8k
                };
1948
23.8k
1949
23.8k
                (ctx, shared_signature_id, trampoline)
1950
23.8k
            }
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_post<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::root<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
23.8k
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
23.8k
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
23.8k
                /// calls the wrapped host function, and returns the translated
1807
23.8k
                /// result back to Wasm.
1808
23.8k
                ///
1809
23.8k
                /// Note that this shim's ABI must *exactly* match that expected
1810
23.8k
                /// by Cranelift, since Cranelift is generating raw function
1811
23.8k
                /// calls directly to this function.
1812
23.8k
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
23.8k
                    vmctx: *mut VMOpaqueContext,
1814
23.8k
                    caller_vmctx: *mut VMContext,
1815
23.8k
                    $( $args: $args::Abi, )*
1816
23.8k
                    retptr: R::Retptr,
1817
23.8k
                ) -> R::Abi
1818
23.8k
                where
1819
23.8k
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
23.8k
                    $( $args: WasmTy, )*
1821
23.8k
                    R: WasmRet,
1822
23.8k
                {
1823
23.8k
                    enum CallResult<U> {
1824
23.8k
                        Ok(U),
1825
23.8k
                        Trap(anyhow::Error),
1826
23.8k
                        Panic(Box<dyn std::any::Any + Send>),
1827
23.8k
                    }
1828
23.8k
1829
23.8k
                    // Note that this `result` is intentionally scoped into a
1830
23.8k
                    // separate block. Handling traps and panics will involve
1831
23.8k
                    // longjmp-ing from this function which means we won't run
1832
23.8k
                    // destructors. As a result anything requiring a destructor
1833
23.8k
                    // should be part of this block, and the long-jmp-ing
1834
23.8k
                    // happens after the block in handling `CallResult`.
1835
23.8k
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
23.8k
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
23.8k
                        let state = (*vmctx).host_state();
1838
23.8k
1839
23.8k
                        // Double-check ourselves in debug mode, but we control
1840
23.8k
                        // the `Any` here so an unsafe downcast should also
1841
23.8k
                        // work.
1842
23.8k
                        debug_assert!(state.is::<F>());
1843
23.8k
                        let func = &*(state as *const _ as *const F);
1844
23.8k
1845
23.8k
                        let ret = {
1846
23.8k
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
23.8k
                                    return R::fallible_from_trap(trap);
1849
23.8k
                                }
1850
23.8k
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
23.8k
                                let r = func(
1852
23.8k
                                    caller.sub_caller(),
1853
23.8k
                                    $( $args, )*
1854
23.8k
                                );
1855
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
23.8k
                                    return R::fallible_from_trap(trap);
1857
23.8k
                                }
1858
23.8k
                                r.into_fallible()
1859
23.8k
                            }))
1860
23.8k
                        };
1861
23.8k
1862
23.8k
                        // Note that we need to be careful when dealing with traps
1863
23.8k
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
23.8k
                        // that it's not unwinding and consequently no Rust
1865
23.8k
                        // destructors are run. We need to be careful to ensure that
1866
23.8k
                        // nothing on the stack needs a destructor when we exit
1867
23.8k
                        // abnormally from this `match`, e.g. on `Err`, on
1868
23.8k
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
23.8k
                        match ret {
1870
23.8k
                            Err(panic) => CallResult::Panic(panic),
1871
23.8k
                            Ok(ret) => {
1872
23.8k
                                // Because the wrapped function is not `unsafe`, we
1873
23.8k
                                // can't assume it returned a value that is
1874
23.8k
                                // compatible with this store.
1875
23.8k
                                if !ret.compatible_with_store(caller.store.0) {
1876
23.8k
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
23.8k
                                } else {
1878
23.8k
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
23.8k
                                        Ok(val) => CallResult::Ok(val),
1880
23.8k
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
23.8k
                                    }
1882
23.8k
                                }
1883
23.8k
1884
23.8k
                            }
1885
23.8k
                        }
1886
23.8k
                    });
1887
23.8k
1888
23.8k
                    match result {
1889
23.8k
                        CallResult::Ok(val) => val,
1890
23.8k
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
23.8k
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
23.8k
                    }
1893
23.8k
                }
1894
23.8k
1895
23.8k
                /// This trampoline allows host code to indirectly call the
1896
23.8k
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
23.8k
                /// happens to reference our wrapped function).
1898
23.8k
                ///
1899
23.8k
                /// It reads the arguments out of the incoming `args` array,
1900
23.8k
                /// calls the given function pointer, and then stores the result
1901
23.8k
                /// back into the `args` array.
1902
23.8k
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
23.8k
                    callee_vmctx: *mut VMOpaqueContext,
1904
23.8k
                    caller_vmctx: *mut VMContext,
1905
23.8k
                    ptr: *const VMFunctionBody,
1906
23.8k
                    args: *mut ValRaw,
1907
23.8k
                )
1908
23.8k
                where
1909
23.8k
                    $($args: WasmTy,)*
1910
23.8k
                    R: WasmRet,
1911
23.8k
                {
1912
23.8k
                    let ptr = mem::transmute::<
1913
23.8k
                        *const VMFunctionBody,
1914
23.8k
                        unsafe extern "C" fn(
1915
23.8k
                            *mut VMOpaqueContext,
1916
23.8k
                            *mut VMContext,
1917
23.8k
                            $( $args::Abi, )*
1918
23.8k
                            R::Retptr,
1919
23.8k
                        ) -> R::Abi,
1920
23.8k
                    >(ptr);
1921
23.8k
1922
23.8k
                    let mut _n = 0;
1923
23.8k
                    $(
1924
23.8k
                        let $args = $args::abi_from_raw(args.add(_n));
1925
23.8k
                        _n += 1;
1926
23.8k
                    )*
1927
23.8k
                    R::wrap_trampoline(args, |retptr| {
1928
23.8k
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
23.8k
                    });
1930
23.8k
                }
1931
23.8k
1932
23.8k
                let ty = R::func_type(
1933
23.8k
                    None::<ValType>.into_iter()
1934
23.8k
                        $(.chain(Some($args::valtype())))*
1935
23.8k
                );
1936
23.8k
1937
23.8k
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
23.8k
1939
23.8k
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
23.8k
1941
23.8k
                let ctx = unsafe {
1942
23.8k
                    VMHostFuncContext::new(
1943
23.8k
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
23.8k
                        shared_signature_id,
1945
23.8k
                        Box::new(self),
1946
23.8k
                    )
1947
23.8k
                };
1948
23.8k
1949
23.8k
                (ctx, shared_signature_id, trampoline)
1950
23.8k
            }
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::out::vm::MessageContext, fvm::kernel::error::ExecutionError>, fvm::syscalls::vm::message_context<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>,), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u64, u32, u64, u64, u64, u64), core::result::Result<fvm_shared::sys::out::send::Send, fvm::kernel::error::ExecutionError>, fvm::syscalls::send::send<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u64, u32, u64, u64, u64, u64), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::self_destruct<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, i64, u32, u32), core::result::Result<[u8; 32], fvm::kernel::error::ExecutionError>, fvm::syscalls::rand::get_chain_randomness<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, i64, i64, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::batch_verify_seals<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
23.8k
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
23.8k
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
23.8k
                /// calls the wrapped host function, and returns the translated
1807
23.8k
                /// result back to Wasm.
1808
23.8k
                ///
1809
23.8k
                /// Note that this shim's ABI must *exactly* match that expected
1810
23.8k
                /// by Cranelift, since Cranelift is generating raw function
1811
23.8k
                /// calls directly to this function.
1812
23.8k
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
23.8k
                    vmctx: *mut VMOpaqueContext,
1814
23.8k
                    caller_vmctx: *mut VMContext,
1815
23.8k
                    $( $args: $args::Abi, )*
1816
23.8k
                    retptr: R::Retptr,
1817
23.8k
                ) -> R::Abi
1818
23.8k
                where
1819
23.8k
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
23.8k
                    $( $args: WasmTy, )*
1821
23.8k
                    R: WasmRet,
1822
23.8k
                {
1823
23.8k
                    enum CallResult<U> {
1824
23.8k
                        Ok(U),
1825
23.8k
                        Trap(anyhow::Error),
1826
23.8k
                        Panic(Box<dyn std::any::Any + Send>),
1827
23.8k
                    }
1828
23.8k
1829
23.8k
                    // Note that this `result` is intentionally scoped into a
1830
23.8k
                    // separate block. Handling traps and panics will involve
1831
23.8k
                    // longjmp-ing from this function which means we won't run
1832
23.8k
                    // destructors. As a result anything requiring a destructor
1833
23.8k
                    // should be part of this block, and the long-jmp-ing
1834
23.8k
                    // happens after the block in handling `CallResult`.
1835
23.8k
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
23.8k
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
23.8k
                        let state = (*vmctx).host_state();
1838
23.8k
1839
23.8k
                        // Double-check ourselves in debug mode, but we control
1840
23.8k
                        // the `Any` here so an unsafe downcast should also
1841
23.8k
                        // work.
1842
23.8k
                        debug_assert!(state.is::<F>());
1843
23.8k
                        let func = &*(state as *const _ as *const F);
1844
23.8k
1845
23.8k
                        let ret = {
1846
23.8k
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
23.8k
                                    return R::fallible_from_trap(trap);
1849
23.8k
                                }
1850
23.8k
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
23.8k
                                let r = func(
1852
23.8k
                                    caller.sub_caller(),
1853
23.8k
                                    $( $args, )*
1854
23.8k
                                );
1855
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
23.8k
                                    return R::fallible_from_trap(trap);
1857
23.8k
                                }
1858
23.8k
                                r.into_fallible()
1859
23.8k
                            }))
1860
23.8k
                        };
1861
23.8k
1862
23.8k
                        // Note that we need to be careful when dealing with traps
1863
23.8k
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
23.8k
                        // that it's not unwinding and consequently no Rust
1865
23.8k
                        // destructors are run. We need to be careful to ensure that
1866
23.8k
                        // nothing on the stack needs a destructor when we exit
1867
23.8k
                        // abnormally from this `match`, e.g. on `Err`, on
1868
23.8k
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
23.8k
                        match ret {
1870
23.8k
                            Err(panic) => CallResult::Panic(panic),
1871
23.8k
                            Ok(ret) => {
1872
23.8k
                                // Because the wrapped function is not `unsafe`, we
1873
23.8k
                                // can't assume it returned a value that is
1874
23.8k
                                // compatible with this store.
1875
23.8k
                                if !ret.compatible_with_store(caller.store.0) {
1876
23.8k
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
23.8k
                                } else {
1878
23.8k
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
23.8k
                                        Ok(val) => CallResult::Ok(val),
1880
23.8k
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
23.8k
                                    }
1882
23.8k
                                }
1883
23.8k
1884
23.8k
                            }
1885
23.8k
                        }
1886
23.8k
                    });
1887
23.8k
1888
23.8k
                    match result {
1889
23.8k
                        CallResult::Ok(val) => val,
1890
23.8k
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
23.8k
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
23.8k
                    }
1893
23.8k
                }
1894
23.8k
1895
23.8k
                /// This trampoline allows host code to indirectly call the
1896
23.8k
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
23.8k
                /// happens to reference our wrapped function).
1898
23.8k
                ///
1899
23.8k
                /// It reads the arguments out of the incoming `args` array,
1900
23.8k
                /// calls the given function pointer, and then stores the result
1901
23.8k
                /// back into the `args` array.
1902
23.8k
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
23.8k
                    callee_vmctx: *mut VMOpaqueContext,
1904
23.8k
                    caller_vmctx: *mut VMContext,
1905
23.8k
                    ptr: *const VMFunctionBody,
1906
23.8k
                    args: *mut ValRaw,
1907
23.8k
                )
1908
23.8k
                where
1909
23.8k
                    $($args: WasmTy,)*
1910
23.8k
                    R: WasmRet,
1911
23.8k
                {
1912
23.8k
                    let ptr = mem::transmute::<
1913
23.8k
                        *const VMFunctionBody,
1914
23.8k
                        unsafe extern "C" fn(
1915
23.8k
                            *mut VMOpaqueContext,
1916
23.8k
                            *mut VMContext,
1917
23.8k
                            $( $args::Abi, )*
1918
23.8k
                            R::Retptr,
1919
23.8k
                        ) -> R::Abi,
1920
23.8k
                    >(ptr);
1921
23.8k
1922
23.8k
                    let mut _n = 0;
1923
23.8k
                    $(
1924
23.8k
                        let $args = $args::abi_from_raw(args.add(_n));
1925
23.8k
                        _n += 1;
1926
23.8k
                    )*
1927
23.8k
                    R::wrap_trampoline(args, |retptr| {
1928
23.8k
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
23.8k
                    });
1930
23.8k
                }
1931
23.8k
1932
23.8k
                let ty = R::func_type(
1933
23.8k
                    None::<ValType>.into_iter()
1934
23.8k
                        $(.chain(Some($args::valtype())))*
1935
23.8k
                );
1936
23.8k
1937
23.8k
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
23.8k
1939
23.8k
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
23.8k
1941
23.8k
                let ctx = unsafe {
1942
23.8k
                    VMHostFuncContext::new(
1943
23.8k
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
23.8k
                        shared_signature_id,
1945
23.8k
                        Box::new(self),
1946
23.8k
                    )
1947
23.8k
                };
1948
23.8k
1949
23.8k
                (ctx, shared_signature_id, trampoline)
1950
23.8k
            }
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, i64, u32, u32), core::result::Result<[u8; 32], fvm::kernel::error::ExecutionError>, fvm::syscalls::rand::get_beacon_randomness<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, i64, i64, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
23.8k
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
23.8k
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
23.8k
                /// calls the wrapped host function, and returns the translated
1807
23.8k
                /// result back to Wasm.
1808
23.8k
                ///
1809
23.8k
                /// Note that this shim's ABI must *exactly* match that expected
1810
23.8k
                /// by Cranelift, since Cranelift is generating raw function
1811
23.8k
                /// calls directly to this function.
1812
23.8k
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
23.8k
                    vmctx: *mut VMOpaqueContext,
1814
23.8k
                    caller_vmctx: *mut VMContext,
1815
23.8k
                    $( $args: $args::Abi, )*
1816
23.8k
                    retptr: R::Retptr,
1817
23.8k
                ) -> R::Abi
1818
23.8k
                where
1819
23.8k
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
23.8k
                    $( $args: WasmTy, )*
1821
23.8k
                    R: WasmRet,
1822
23.8k
                {
1823
23.8k
                    enum CallResult<U> {
1824
23.8k
                        Ok(U),
1825
23.8k
                        Trap(anyhow::Error),
1826
23.8k
                        Panic(Box<dyn std::any::Any + Send>),
1827
23.8k
                    }
1828
23.8k
1829
23.8k
                    // Note that this `result` is intentionally scoped into a
1830
23.8k
                    // separate block. Handling traps and panics will involve
1831
23.8k
                    // longjmp-ing from this function which means we won't run
1832
23.8k
                    // destructors. As a result anything requiring a destructor
1833
23.8k
                    // should be part of this block, and the long-jmp-ing
1834
23.8k
                    // happens after the block in handling `CallResult`.
1835
23.8k
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
23.8k
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
23.8k
                        let state = (*vmctx).host_state();
1838
23.8k
1839
23.8k
                        // Double-check ourselves in debug mode, but we control
1840
23.8k
                        // the `Any` here so an unsafe downcast should also
1841
23.8k
                        // work.
1842
23.8k
                        debug_assert!(state.is::<F>());
1843
23.8k
                        let func = &*(state as *const _ as *const F);
1844
23.8k
1845
23.8k
                        let ret = {
1846
23.8k
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
23.8k
                                    return R::fallible_from_trap(trap);
1849
23.8k
                                }
1850
23.8k
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
23.8k
                                let r = func(
1852
23.8k
                                    caller.sub_caller(),
1853
23.8k
                                    $( $args, )*
1854
23.8k
                                );
1855
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
23.8k
                                    return R::fallible_from_trap(trap);
1857
23.8k
                                }
1858
23.8k
                                r.into_fallible()
1859
23.8k
                            }))
1860
23.8k
                        };
1861
23.8k
1862
23.8k
                        // Note that we need to be careful when dealing with traps
1863
23.8k
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
23.8k
                        // that it's not unwinding and consequently no Rust
1865
23.8k
                        // destructors are run. We need to be careful to ensure that
1866
23.8k
                        // nothing on the stack needs a destructor when we exit
1867
23.8k
                        // abnormally from this `match`, e.g. on `Err`, on
1868
23.8k
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
23.8k
                        match ret {
1870
23.8k
                            Err(panic) => CallResult::Panic(panic),
1871
23.8k
                            Ok(ret) => {
1872
23.8k
                                // Because the wrapped function is not `unsafe`, we
1873
23.8k
                                // can't assume it returned a value that is
1874
23.8k
                                // compatible with this store.
1875
23.8k
                                if !ret.compatible_with_store(caller.store.0) {
1876
23.8k
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
23.8k
                                } else {
1878
23.8k
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
23.8k
                                        Ok(val) => CallResult::Ok(val),
1880
23.8k
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
23.8k
                                    }
1882
23.8k
                                }
1883
23.8k
1884
23.8k
                            }
1885
23.8k
                        }
1886
23.8k
                    });
1887
23.8k
1888
23.8k
                    match result {
1889
23.8k
                        CallResult::Ok(val) => val,
1890
23.8k
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
23.8k
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
23.8k
                    }
1893
23.8k
                }
1894
23.8k
1895
23.8k
                /// This trampoline allows host code to indirectly call the
1896
23.8k
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
23.8k
                /// happens to reference our wrapped function).
1898
23.8k
                ///
1899
23.8k
                /// It reads the arguments out of the incoming `args` array,
1900
23.8k
                /// calls the given function pointer, and then stores the result
1901
23.8k
                /// back into the `args` array.
1902
23.8k
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
23.8k
                    callee_vmctx: *mut VMOpaqueContext,
1904
23.8k
                    caller_vmctx: *mut VMContext,
1905
23.8k
                    ptr: *const VMFunctionBody,
1906
23.8k
                    args: *mut ValRaw,
1907
23.8k
                )
1908
23.8k
                where
1909
23.8k
                    $($args: WasmTy,)*
1910
23.8k
                    R: WasmRet,
1911
23.8k
                {
1912
23.8k
                    let ptr = mem::transmute::<
1913
23.8k
                        *const VMFunctionBody,
1914
23.8k
                        unsafe extern "C" fn(
1915
23.8k
                            *mut VMOpaqueContext,
1916
23.8k
                            *mut VMContext,
1917
23.8k
                            $( $args::Abi, )*
1918
23.8k
                            R::Retptr,
1919
23.8k
                        ) -> R::Abi,
1920
23.8k
                    >(ptr);
1921
23.8k
1922
23.8k
                    let mut _n = 0;
1923
23.8k
                    $(
1924
23.8k
                        let $args = $args::abi_from_raw(args.add(_n));
1925
23.8k
                        _n += 1;
1926
23.8k
                    )*
1927
23.8k
                    R::wrap_trampoline(args, |retptr| {
1928
23.8k
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
23.8k
                    });
1930
23.8k
                }
1931
23.8k
1932
23.8k
                let ty = R::func_type(
1933
23.8k
                    None::<ValType>.into_iter()
1934
23.8k
                        $(.chain(Some($args::valtype())))*
1935
23.8k
                );
1936
23.8k
1937
23.8k
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
23.8k
1939
23.8k
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
23.8k
1941
23.8k
                let ctx = unsafe {
1942
23.8k
                    VMHostFuncContext::new(
1943
23.8k
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
23.8k
                        shared_signature_id,
1945
23.8k
                        Box::new(self),
1946
23.8k
                    )
1947
23.8k
                };
1948
23.8k
1949
23.8k
                (ctx, shared_signature_id, trampoline)
1950
23.8k
            }
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_aggregate_seals<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_actor_code_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u64, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
23.8k
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
23.8k
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
23.8k
                /// calls the wrapped host function, and returns the translated
1807
23.8k
                /// result back to Wasm.
1808
23.8k
                ///
1809
23.8k
                /// Note that this shim's ABI must *exactly* match that expected
1810
23.8k
                /// by Cranelift, since Cranelift is generating raw function
1811
23.8k
                /// calls directly to this function.
1812
23.8k
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
23.8k
                    vmctx: *mut VMOpaqueContext,
1814
23.8k
                    caller_vmctx: *mut VMContext,
1815
23.8k
                    $( $args: $args::Abi, )*
1816
23.8k
                    retptr: R::Retptr,
1817
23.8k
                ) -> R::Abi
1818
23.8k
                where
1819
23.8k
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
23.8k
                    $( $args: WasmTy, )*
1821
23.8k
                    R: WasmRet,
1822
23.8k
                {
1823
23.8k
                    enum CallResult<U> {
1824
23.8k
                        Ok(U),
1825
23.8k
                        Trap(anyhow::Error),
1826
23.8k
                        Panic(Box<dyn std::any::Any + Send>),
1827
23.8k
                    }
1828
23.8k
1829
23.8k
                    // Note that this `result` is intentionally scoped into a
1830
23.8k
                    // separate block. Handling traps and panics will involve
1831
23.8k
                    // longjmp-ing from this function which means we won't run
1832
23.8k
                    // destructors. As a result anything requiring a destructor
1833
23.8k
                    // should be part of this block, and the long-jmp-ing
1834
23.8k
                    // happens after the block in handling `CallResult`.
1835
23.8k
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
23.8k
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
23.8k
                        let state = (*vmctx).host_state();
1838
23.8k
1839
23.8k
                        // Double-check ourselves in debug mode, but we control
1840
23.8k
                        // the `Any` here so an unsafe downcast should also
1841
23.8k
                        // work.
1842
23.8k
                        debug_assert!(state.is::<F>());
1843
23.8k
                        let func = &*(state as *const _ as *const F);
1844
23.8k
1845
23.8k
                        let ret = {
1846
23.8k
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
23.8k
                                    return R::fallible_from_trap(trap);
1849
23.8k
                                }
1850
23.8k
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
23.8k
                                let r = func(
1852
23.8k
                                    caller.sub_caller(),
1853
23.8k
                                    $( $args, )*
1854
23.8k
                                );
1855
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
23.8k
                                    return R::fallible_from_trap(trap);
1857
23.8k
                                }
1858
23.8k
                                r.into_fallible()
1859
23.8k
                            }))
1860
23.8k
                        };
1861
23.8k
1862
23.8k
                        // Note that we need to be careful when dealing with traps
1863
23.8k
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
23.8k
                        // that it's not unwinding and consequently no Rust
1865
23.8k
                        // destructors are run. We need to be careful to ensure that
1866
23.8k
                        // nothing on the stack needs a destructor when we exit
1867
23.8k
                        // abnormally from this `match`, e.g. on `Err`, on
1868
23.8k
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
23.8k
                        match ret {
1870
23.8k
                            Err(panic) => CallResult::Panic(panic),
1871
23.8k
                            Ok(ret) => {
1872
23.8k
                                // Because the wrapped function is not `unsafe`, we
1873
23.8k
                                // can't assume it returned a value that is
1874
23.8k
                                // compatible with this store.
1875
23.8k
                                if !ret.compatible_with_store(caller.store.0) {
1876
23.8k
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
23.8k
                                } else {
1878
23.8k
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
23.8k
                                        Ok(val) => CallResult::Ok(val),
1880
23.8k
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
23.8k
                                    }
1882
23.8k
                                }
1883
23.8k
1884
23.8k
                            }
1885
23.8k
                        }
1886
23.8k
                    });
1887
23.8k
1888
23.8k
                    match result {
1889
23.8k
                        CallResult::Ok(val) => val,
1890
23.8k
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
23.8k
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
23.8k
                    }
1893
23.8k
                }
1894
23.8k
1895
23.8k
                /// This trampoline allows host code to indirectly call the
1896
23.8k
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
23.8k
                /// happens to reference our wrapped function).
1898
23.8k
                ///
1899
23.8k
                /// It reads the arguments out of the incoming `args` array,
1900
23.8k
                /// calls the given function pointer, and then stores the result
1901
23.8k
                /// back into the `args` array.
1902
23.8k
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
23.8k
                    callee_vmctx: *mut VMOpaqueContext,
1904
23.8k
                    caller_vmctx: *mut VMContext,
1905
23.8k
                    ptr: *const VMFunctionBody,
1906
23.8k
                    args: *mut ValRaw,
1907
23.8k
                )
1908
23.8k
                where
1909
23.8k
                    $($args: WasmTy,)*
1910
23.8k
                    R: WasmRet,
1911
23.8k
                {
1912
23.8k
                    let ptr = mem::transmute::<
1913
23.8k
                        *const VMFunctionBody,
1914
23.8k
                        unsafe extern "C" fn(
1915
23.8k
                            *mut VMOpaqueContext,
1916
23.8k
                            *mut VMContext,
1917
23.8k
                            $( $args::Abi, )*
1918
23.8k
                            R::Retptr,
1919
23.8k
                        ) -> R::Abi,
1920
23.8k
                    >(ptr);
1921
23.8k
1922
23.8k
                    let mut _n = 0;
1923
23.8k
                    $(
1924
23.8k
                        let $args = $args::abi_from_raw(args.add(_n));
1925
23.8k
                        _n += 1;
1926
23.8k
                    )*
1927
23.8k
                    R::wrap_trampoline(args, |retptr| {
1928
23.8k
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
23.8k
                    });
1930
23.8k
                }
1931
23.8k
1932
23.8k
                let ty = R::func_type(
1933
23.8k
                    None::<ValType>.into_iter()
1934
23.8k
                        $(.chain(Some($args::valtype())))*
1935
23.8k
                );
1936
23.8k
1937
23.8k
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
23.8k
1939
23.8k
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
23.8k
1941
23.8k
                let ctx = unsafe {
1942
23.8k
                    VMHostFuncContext::new(
1943
23.8k
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
23.8k
                        shared_signature_id,
1945
23.8k
                        Box::new(self),
1946
23.8k
                    )
1947
23.8k
                };
1948
23.8k
1949
23.8k
                (ctx, shared_signature_id, trampoline)
1950
23.8k
            }
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::total_fil_circ_supply<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>,), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32, u32, u32), core::result::Result<fvm_shared::sys::out::crypto::VerifyConsensusFault, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_consensus_fault<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
23.8k
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
23.8k
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
23.8k
                /// calls the wrapped host function, and returns the translated
1807
23.8k
                /// result back to Wasm.
1808
23.8k
                ///
1809
23.8k
                /// Note that this shim's ABI must *exactly* match that expected
1810
23.8k
                /// by Cranelift, since Cranelift is generating raw function
1811
23.8k
                /// calls directly to this function.
1812
23.8k
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
23.8k
                    vmctx: *mut VMOpaqueContext,
1814
23.8k
                    caller_vmctx: *mut VMContext,
1815
23.8k
                    $( $args: $args::Abi, )*
1816
23.8k
                    retptr: R::Retptr,
1817
23.8k
                ) -> R::Abi
1818
23.8k
                where
1819
23.8k
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
23.8k
                    $( $args: WasmTy, )*
1821
23.8k
                    R: WasmRet,
1822
23.8k
                {
1823
23.8k
                    enum CallResult<U> {
1824
23.8k
                        Ok(U),
1825
23.8k
                        Trap(anyhow::Error),
1826
23.8k
                        Panic(Box<dyn std::any::Any + Send>),
1827
23.8k
                    }
1828
23.8k
1829
23.8k
                    // Note that this `result` is intentionally scoped into a
1830
23.8k
                    // separate block. Handling traps and panics will involve
1831
23.8k
                    // longjmp-ing from this function which means we won't run
1832
23.8k
                    // destructors. As a result anything requiring a destructor
1833
23.8k
                    // should be part of this block, and the long-jmp-ing
1834
23.8k
                    // happens after the block in handling `CallResult`.
1835
23.8k
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
23.8k
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
23.8k
                        let state = (*vmctx).host_state();
1838
23.8k
1839
23.8k
                        // Double-check ourselves in debug mode, but we control
1840
23.8k
                        // the `Any` here so an unsafe downcast should also
1841
23.8k
                        // work.
1842
23.8k
                        debug_assert!(state.is::<F>());
1843
23.8k
                        let func = &*(state as *const _ as *const F);
1844
23.8k
1845
23.8k
                        let ret = {
1846
23.8k
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
23.8k
                                    return R::fallible_from_trap(trap);
1849
23.8k
                                }
1850
23.8k
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
23.8k
                                let r = func(
1852
23.8k
                                    caller.sub_caller(),
1853
23.8k
                                    $( $args, )*
1854
23.8k
                                );
1855
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
23.8k
                                    return R::fallible_from_trap(trap);
1857
23.8k
                                }
1858
23.8k
                                r.into_fallible()
1859
23.8k
                            }))
1860
23.8k
                        };
1861
23.8k
1862
23.8k
                        // Note that we need to be careful when dealing with traps
1863
23.8k
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
23.8k
                        // that it's not unwinding and consequently no Rust
1865
23.8k
                        // destructors are run. We need to be careful to ensure that
1866
23.8k
                        // nothing on the stack needs a destructor when we exit
1867
23.8k
                        // abnormally from this `match`, e.g. on `Err`, on
1868
23.8k
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
23.8k
                        match ret {
1870
23.8k
                            Err(panic) => CallResult::Panic(panic),
1871
23.8k
                            Ok(ret) => {
1872
23.8k
                                // Because the wrapped function is not `unsafe`, we
1873
23.8k
                                // can't assume it returned a value that is
1874
23.8k
                                // compatible with this store.
1875
23.8k
                                if !ret.compatible_with_store(caller.store.0) {
1876
23.8k
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
23.8k
                                } else {
1878
23.8k
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
23.8k
                                        Ok(val) => CallResult::Ok(val),
1880
23.8k
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
23.8k
                                    }
1882
23.8k
                                }
1883
23.8k
1884
23.8k
                            }
1885
23.8k
                        }
1886
23.8k
                    });
1887
23.8k
1888
23.8k
                    match result {
1889
23.8k
                        CallResult::Ok(val) => val,
1890
23.8k
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
23.8k
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
23.8k
                    }
1893
23.8k
                }
1894
23.8k
1895
23.8k
                /// This trampoline allows host code to indirectly call the
1896
23.8k
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
23.8k
                /// happens to reference our wrapped function).
1898
23.8k
                ///
1899
23.8k
                /// It reads the arguments out of the incoming `args` array,
1900
23.8k
                /// calls the given function pointer, and then stores the result
1901
23.8k
                /// back into the `args` array.
1902
23.8k
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
23.8k
                    callee_vmctx: *mut VMOpaqueContext,
1904
23.8k
                    caller_vmctx: *mut VMContext,
1905
23.8k
                    ptr: *const VMFunctionBody,
1906
23.8k
                    args: *mut ValRaw,
1907
23.8k
                )
1908
23.8k
                where
1909
23.8k
                    $($args: WasmTy,)*
1910
23.8k
                    R: WasmRet,
1911
23.8k
                {
1912
23.8k
                    let ptr = mem::transmute::<
1913
23.8k
                        *const VMFunctionBody,
1914
23.8k
                        unsafe extern "C" fn(
1915
23.8k
                            *mut VMOpaqueContext,
1916
23.8k
                            *mut VMContext,
1917
23.8k
                            $( $args::Abi, )*
1918
23.8k
                            R::Retptr,
1919
23.8k
                        ) -> R::Abi,
1920
23.8k
                    >(ptr);
1921
23.8k
1922
23.8k
                    let mut _n = 0;
1923
23.8k
                    $(
1924
23.8k
                        let $args = $args::abi_from_raw(args.add(_n));
1925
23.8k
                        _n += 1;
1926
23.8k
                    )*
1927
23.8k
                    R::wrap_trampoline(args, |retptr| {
1928
23.8k
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
23.8k
                    });
1930
23.8k
                }
1931
23.8k
1932
23.8k
                let ty = R::func_type(
1933
23.8k
                    None::<ValType>.into_iter()
1934
23.8k
                        $(.chain(Some($args::valtype())))*
1935
23.8k
                );
1936
23.8k
1937
23.8k
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
23.8k
1939
23.8k
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
23.8k
1941
23.8k
                let ctx = unsafe {
1942
23.8k
                    VMHostFuncContext::new(
1943
23.8k
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
23.8k
                        shared_signature_id,
1945
23.8k
                        Box::new(self),
1946
23.8k
                    )
1947
23.8k
                };
1948
23.8k
1949
23.8k
                (ctx, shared_signature_id, trampoline)
1950
23.8k
            }
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, i64, u32, u32), core::result::Result<[u8; 32], fvm::kernel::error::ExecutionError>, fvm::syscalls::rand::get_chain_randomness<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, i64, i64, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
23.8k
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
23.8k
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
23.8k
                /// calls the wrapped host function, and returns the translated
1807
23.8k
                /// result back to Wasm.
1808
23.8k
                ///
1809
23.8k
                /// Note that this shim's ABI must *exactly* match that expected
1810
23.8k
                /// by Cranelift, since Cranelift is generating raw function
1811
23.8k
                /// calls directly to this function.
1812
23.8k
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
23.8k
                    vmctx: *mut VMOpaqueContext,
1814
23.8k
                    caller_vmctx: *mut VMContext,
1815
23.8k
                    $( $args: $args::Abi, )*
1816
23.8k
                    retptr: R::Retptr,
1817
23.8k
                ) -> R::Abi
1818
23.8k
                where
1819
23.8k
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
23.8k
                    $( $args: WasmTy, )*
1821
23.8k
                    R: WasmRet,
1822
23.8k
                {
1823
23.8k
                    enum CallResult<U> {
1824
23.8k
                        Ok(U),
1825
23.8k
                        Trap(anyhow::Error),
1826
23.8k
                        Panic(Box<dyn std::any::Any + Send>),
1827
23.8k
                    }
1828
23.8k
1829
23.8k
                    // Note that this `result` is intentionally scoped into a
1830
23.8k
                    // separate block. Handling traps and panics will involve
1831
23.8k
                    // longjmp-ing from this function which means we won't run
1832
23.8k
                    // destructors. As a result anything requiring a destructor
1833
23.8k
                    // should be part of this block, and the long-jmp-ing
1834
23.8k
                    // happens after the block in handling `CallResult`.
1835
23.8k
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
23.8k
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
23.8k
                        let state = (*vmctx).host_state();
1838
23.8k
1839
23.8k
                        // Double-check ourselves in debug mode, but we control
1840
23.8k
                        // the `Any` here so an unsafe downcast should also
1841
23.8k
                        // work.
1842
23.8k
                        debug_assert!(state.is::<F>());
1843
23.8k
                        let func = &*(state as *const _ as *const F);
1844
23.8k
1845
23.8k
                        let ret = {
1846
23.8k
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
23.8k
                                    return R::fallible_from_trap(trap);
1849
23.8k
                                }
1850
23.8k
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
23.8k
                                let r = func(
1852
23.8k
                                    caller.sub_caller(),
1853
23.8k
                                    $( $args, )*
1854
23.8k
                                );
1855
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
23.8k
                                    return R::fallible_from_trap(trap);
1857
23.8k
                                }
1858
23.8k
                                r.into_fallible()
1859
23.8k
                            }))
1860
23.8k
                        };
1861
23.8k
1862
23.8k
                        // Note that we need to be careful when dealing with traps
1863
23.8k
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
23.8k
                        // that it's not unwinding and consequently no Rust
1865
23.8k
                        // destructors are run. We need to be careful to ensure that
1866
23.8k
                        // nothing on the stack needs a destructor when we exit
1867
23.8k
                        // abnormally from this `match`, e.g. on `Err`, on
1868
23.8k
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
23.8k
                        match ret {
1870
23.8k
                            Err(panic) => CallResult::Panic(panic),
1871
23.8k
                            Ok(ret) => {
1872
23.8k
                                // Because the wrapped function is not `unsafe`, we
1873
23.8k
                                // can't assume it returned a value that is
1874
23.8k
                                // compatible with this store.
1875
23.8k
                                if !ret.compatible_with_store(caller.store.0) {
1876
23.8k
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
23.8k
                                } else {
1878
23.8k
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
23.8k
                                        Ok(val) => CallResult::Ok(val),
1880
23.8k
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
23.8k
                                    }
1882
23.8k
                                }
1883
23.8k
1884
23.8k
                            }
1885
23.8k
                        }
1886
23.8k
                    });
1887
23.8k
1888
23.8k
                    match result {
1889
23.8k
                        CallResult::Ok(val) => val,
1890
23.8k
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
23.8k
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
23.8k
                    }
1893
23.8k
                }
1894
23.8k
1895
23.8k
                /// This trampoline allows host code to indirectly call the
1896
23.8k
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
23.8k
                /// happens to reference our wrapped function).
1898
23.8k
                ///
1899
23.8k
                /// It reads the arguments out of the incoming `args` array,
1900
23.8k
                /// calls the given function pointer, and then stores the result
1901
23.8k
                /// back into the `args` array.
1902
23.8k
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
23.8k
                    callee_vmctx: *mut VMOpaqueContext,
1904
23.8k
                    caller_vmctx: *mut VMContext,
1905
23.8k
                    ptr: *const VMFunctionBody,
1906
23.8k
                    args: *mut ValRaw,
1907
23.8k
                )
1908
23.8k
                where
1909
23.8k
                    $($args: WasmTy,)*
1910
23.8k
                    R: WasmRet,
1911
23.8k
                {
1912
23.8k
                    let ptr = mem::transmute::<
1913
23.8k
                        *const VMFunctionBody,
1914
23.8k
                        unsafe extern "C" fn(
1915
23.8k
                            *mut VMOpaqueContext,
1916
23.8k
                            *mut VMContext,
1917
23.8k
                            $( $args::Abi, )*
1918
23.8k
                            R::Retptr,
1919
23.8k
                        ) -> R::Abi,
1920
23.8k
                    >(ptr);
1921
23.8k
1922
23.8k
                    let mut _n = 0;
1923
23.8k
                    $(
1924
23.8k
                        let $args = $args::abi_from_raw(args.add(_n));
1925
23.8k
                        _n += 1;
1926
23.8k
                    )*
1927
23.8k
                    R::wrap_trampoline(args, |retptr| {
1928
23.8k
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
23.8k
                    });
1930
23.8k
                }
1931
23.8k
1932
23.8k
                let ty = R::func_type(
1933
23.8k
                    None::<ValType>.into_iter()
1934
23.8k
                        $(.chain(Some($args::valtype())))*
1935
23.8k
                );
1936
23.8k
1937
23.8k
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
23.8k
1939
23.8k
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
23.8k
1941
23.8k
                let ctx = unsafe {
1942
23.8k
                    VMHostFuncContext::new(
1943
23.8k
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
23.8k
                        shared_signature_id,
1945
23.8k
                        Box::new(self),
1946
23.8k
                    )
1947
23.8k
                };
1948
23.8k
1949
23.8k
                (ctx, shared_signature_id, trampoline)
1950
23.8k
            }
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::enabled<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>,), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<fvm_shared::sys::out::ipld::IpldOpen, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_open<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
23.8k
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
23.8k
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
23.8k
                /// calls the wrapped host function, and returns the translated
1807
23.8k
                /// result back to Wasm.
1808
23.8k
                ///
1809
23.8k
                /// Note that this shim's ABI must *exactly* match that expected
1810
23.8k
                /// by Cranelift, since Cranelift is generating raw function
1811
23.8k
                /// calls directly to this function.
1812
23.8k
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
23.8k
                    vmctx: *mut VMOpaqueContext,
1814
23.8k
                    caller_vmctx: *mut VMContext,
1815
23.8k
                    $( $args: $args::Abi, )*
1816
23.8k
                    retptr: R::Retptr,
1817
23.8k
                ) -> R::Abi
1818
23.8k
                where
1819
23.8k
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
23.8k
                    $( $args: WasmTy, )*
1821
23.8k
                    R: WasmRet,
1822
23.8k
                {
1823
23.8k
                    enum CallResult<U> {
1824
23.8k
                        Ok(U),
1825
23.8k
                        Trap(anyhow::Error),
1826
23.8k
                        Panic(Box<dyn std::any::Any + Send>),
1827
23.8k
                    }
1828
23.8k
1829
23.8k
                    // Note that this `result` is intentionally scoped into a
1830
23.8k
                    // separate block. Handling traps and panics will involve
1831
23.8k
                    // longjmp-ing from this function which means we won't run
1832
23.8k
                    // destructors. As a result anything requiring a destructor
1833
23.8k
                    // should be part of this block, and the long-jmp-ing
1834
23.8k
                    // happens after the block in handling `CallResult`.
1835
23.8k
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
23.8k
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
23.8k
                        let state = (*vmctx).host_state();
1838
23.8k
1839
23.8k
                        // Double-check ourselves in debug mode, but we control
1840
23.8k
                        // the `Any` here so an unsafe downcast should also
1841
23.8k
                        // work.
1842
23.8k
                        debug_assert!(state.is::<F>());
1843
23.8k
                        let func = &*(state as *const _ as *const F);
1844
23.8k
1845
23.8k
                        let ret = {
1846
23.8k
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
23.8k
                                    return R::fallible_from_trap(trap);
1849
23.8k
                                }
1850
23.8k
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
23.8k
                                let r = func(
1852
23.8k
                                    caller.sub_caller(),
1853
23.8k
                                    $( $args, )*
1854
23.8k
                                );
1855
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
23.8k
                                    return R::fallible_from_trap(trap);
1857
23.8k
                                }
1858
23.8k
                                r.into_fallible()
1859
23.8k
                            }))
1860
23.8k
                        };
1861
23.8k
1862
23.8k
                        // Note that we need to be careful when dealing with traps
1863
23.8k
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
23.8k
                        // that it's not unwinding and consequently no Rust
1865
23.8k
                        // destructors are run. We need to be careful to ensure that
1866
23.8k
                        // nothing on the stack needs a destructor when we exit
1867
23.8k
                        // abnormally from this `match`, e.g. on `Err`, on
1868
23.8k
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
23.8k
                        match ret {
1870
23.8k
                            Err(panic) => CallResult::Panic(panic),
1871
23.8k
                            Ok(ret) => {
1872
23.8k
                                // Because the wrapped function is not `unsafe`, we
1873
23.8k
                                // can't assume it returned a value that is
1874
23.8k
                                // compatible with this store.
1875
23.8k
                                if !ret.compatible_with_store(caller.store.0) {
1876
23.8k
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
23.8k
                                } else {
1878
23.8k
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
23.8k
                                        Ok(val) => CallResult::Ok(val),
1880
23.8k
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
23.8k
                                    }
1882
23.8k
                                }
1883
23.8k
1884
23.8k
                            }
1885
23.8k
                        }
1886
23.8k
                    });
1887
23.8k
1888
23.8k
                    match result {
1889
23.8k
                        CallResult::Ok(val) => val,
1890
23.8k
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
23.8k
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
23.8k
                    }
1893
23.8k
                }
1894
23.8k
1895
23.8k
                /// This trampoline allows host code to indirectly call the
1896
23.8k
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
23.8k
                /// happens to reference our wrapped function).
1898
23.8k
                ///
1899
23.8k
                /// It reads the arguments out of the incoming `args` array,
1900
23.8k
                /// calls the given function pointer, and then stores the result
1901
23.8k
                /// back into the `args` array.
1902
23.8k
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
23.8k
                    callee_vmctx: *mut VMOpaqueContext,
1904
23.8k
                    caller_vmctx: *mut VMContext,
1905
23.8k
                    ptr: *const VMFunctionBody,
1906
23.8k
                    args: *mut ValRaw,
1907
23.8k
                )
1908
23.8k
                where
1909
23.8k
                    $($args: WasmTy,)*
1910
23.8k
                    R: WasmRet,
1911
23.8k
                {
1912
23.8k
                    let ptr = mem::transmute::<
1913
23.8k
                        *const VMFunctionBody,
1914
23.8k
                        unsafe extern "C" fn(
1915
23.8k
                            *mut VMOpaqueContext,
1916
23.8k
                            *mut VMContext,
1917
23.8k
                            $( $args::Abi, )*
1918
23.8k
                            R::Retptr,
1919
23.8k
                        ) -> R::Abi,
1920
23.8k
                    >(ptr);
1921
23.8k
1922
23.8k
                    let mut _n = 0;
1923
23.8k
                    $(
1924
23.8k
                        let $args = $args::abi_from_raw(args.add(_n));
1925
23.8k
                        _n += 1;
1926
23.8k
                    )*
1927
23.8k
                    R::wrap_trampoline(args, |retptr| {
1928
23.8k
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
23.8k
                    });
1930
23.8k
                }
1931
23.8k
1932
23.8k
                let ty = R::func_type(
1933
23.8k
                    None::<ValType>.into_iter()
1934
23.8k
                        $(.chain(Some($args::valtype())))*
1935
23.8k
                );
1936
23.8k
1937
23.8k
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
23.8k
1939
23.8k
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
23.8k
1941
23.8k
                let ctx = unsafe {
1942
23.8k
                    VMHostFuncContext::new(
1943
23.8k
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
23.8k
                        shared_signature_id,
1945
23.8k
                        Box::new(self),
1946
23.8k
                    )
1947
23.8k
                };
1948
23.8k
1949
23.8k
                (ctx, shared_signature_id, trampoline)
1950
23.8k
            }
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u64, u32, u64, u64, u64, u64), core::result::Result<fvm_shared::sys::out::send::Send, fvm::kernel::error::ExecutionError>, fvm::syscalls::send::send<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, u64, u32, u64, u64, u64, u64), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
23.8k
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
23.8k
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
23.8k
                /// calls the wrapped host function, and returns the translated
1807
23.8k
                /// result back to Wasm.
1808
23.8k
                ///
1809
23.8k
                /// Note that this shim's ABI must *exactly* match that expected
1810
23.8k
                /// by Cranelift, since Cranelift is generating raw function
1811
23.8k
                /// calls directly to this function.
1812
23.8k
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
23.8k
                    vmctx: *mut VMOpaqueContext,
1814
23.8k
                    caller_vmctx: *mut VMContext,
1815
23.8k
                    $( $args: $args::Abi, )*
1816
23.8k
                    retptr: R::Retptr,
1817
23.8k
                ) -> R::Abi
1818
23.8k
                where
1819
23.8k
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
23.8k
                    $( $args: WasmTy, )*
1821
23.8k
                    R: WasmRet,
1822
23.8k
                {
1823
23.8k
                    enum CallResult<U> {
1824
23.8k
                        Ok(U),
1825
23.8k
                        Trap(anyhow::Error),
1826
23.8k
                        Panic(Box<dyn std::any::Any + Send>),
1827
23.8k
                    }
1828
23.8k
1829
23.8k
                    // Note that this `result` is intentionally scoped into a
1830
23.8k
                    // separate block. Handling traps and panics will involve
1831
23.8k
                    // longjmp-ing from this function which means we won't run
1832
23.8k
                    // destructors. As a result anything requiring a destructor
1833
23.8k
                    // should be part of this block, and the long-jmp-ing
1834
23.8k
                    // happens after the block in handling `CallResult`.
1835
23.8k
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
23.8k
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
23.8k
                        let state = (*vmctx).host_state();
1838
23.8k
1839
23.8k
                        // Double-check ourselves in debug mode, but we control
1840
23.8k
                        // the `Any` here so an unsafe downcast should also
1841
23.8k
                        // work.
1842
23.8k
                        debug_assert!(state.is::<F>());
1843
23.8k
                        let func = &*(state as *const _ as *const F);
1844
23.8k
1845
23.8k
                        let ret = {
1846
23.8k
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
23.8k
                                    return R::fallible_from_trap(trap);
1849
23.8k
                                }
1850
23.8k
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
23.8k
                                let r = func(
1852
23.8k
                                    caller.sub_caller(),
1853
23.8k
                                    $( $args, )*
1854
23.8k
                                );
1855
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
23.8k
                                    return R::fallible_from_trap(trap);
1857
23.8k
                                }
1858
23.8k
                                r.into_fallible()
1859
23.8k
                            }))
1860
23.8k
                        };
1861
23.8k
1862
23.8k
                        // Note that we need to be careful when dealing with traps
1863
23.8k
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
23.8k
                        // that it's not unwinding and consequently no Rust
1865
23.8k
                        // destructors are run. We need to be careful to ensure that
1866
23.8k
                        // nothing on the stack needs a destructor when we exit
1867
23.8k
                        // abnormally from this `match`, e.g. on `Err`, on
1868
23.8k
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
23.8k
                        match ret {
1870
23.8k
                            Err(panic) => CallResult::Panic(panic),
1871
23.8k
                            Ok(ret) => {
1872
23.8k
                                // Because the wrapped function is not `unsafe`, we
1873
23.8k
                                // can't assume it returned a value that is
1874
23.8k
                                // compatible with this store.
1875
23.8k
                                if !ret.compatible_with_store(caller.store.0) {
1876
23.8k
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
23.8k
                                } else {
1878
23.8k
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
23.8k
                                        Ok(val) => CallResult::Ok(val),
1880
23.8k
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
23.8k
                                    }
1882
23.8k
                                }
1883
23.8k
1884
23.8k
                            }
1885
23.8k
                        }
1886
23.8k
                    });
1887
23.8k
1888
23.8k
                    match result {
1889
23.8k
                        CallResult::Ok(val) => val,
1890
23.8k
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
23.8k
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
23.8k
                    }
1893
23.8k
                }
1894
23.8k
1895
23.8k
                /// This trampoline allows host code to indirectly call the
1896
23.8k
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
23.8k
                /// happens to reference our wrapped function).
1898
23.8k
                ///
1899
23.8k
                /// It reads the arguments out of the incoming `args` array,
1900
23.8k
                /// calls the given function pointer, and then stores the result
1901
23.8k
                /// back into the `args` array.
1902
23.8k
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
23.8k
                    callee_vmctx: *mut VMOpaqueContext,
1904
23.8k
                    caller_vmctx: *mut VMContext,
1905
23.8k
                    ptr: *const VMFunctionBody,
1906
23.8k
                    args: *mut ValRaw,
1907
23.8k
                )
1908
23.8k
                where
1909
23.8k
                    $($args: WasmTy,)*
1910
23.8k
                    R: WasmRet,
1911
23.8k
                {
1912
23.8k
                    let ptr = mem::transmute::<
1913
23.8k
                        *const VMFunctionBody,
1914
23.8k
                        unsafe extern "C" fn(
1915
23.8k
                            *mut VMOpaqueContext,
1916
23.8k
                            *mut VMContext,
1917
23.8k
                            $( $args::Abi, )*
1918
23.8k
                            R::Retptr,
1919
23.8k
                        ) -> R::Abi,
1920
23.8k
                    >(ptr);
1921
23.8k
1922
23.8k
                    let mut _n = 0;
1923
23.8k
                    $(
1924
23.8k
                        let $args = $args::abi_from_raw(args.add(_n));
1925
23.8k
                        _n += 1;
1926
23.8k
                    )*
1927
23.8k
                    R::wrap_trampoline(args, |retptr| {
1928
23.8k
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
23.8k
                    });
1930
23.8k
                }
1931
23.8k
1932
23.8k
                let ty = R::func_type(
1933
23.8k
                    None::<ValType>.into_iter()
1934
23.8k
                        $(.chain(Some($args::valtype())))*
1935
23.8k
                );
1936
23.8k
1937
23.8k
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
23.8k
1939
23.8k
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
23.8k
1941
23.8k
                let ctx = unsafe {
1942
23.8k
                    VMHostFuncContext::new(
1943
23.8k
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
23.8k
                        shared_signature_id,
1945
23.8k
                        Box::new(self),
1946
23.8k
                    )
1947
23.8k
                };
1948
23.8k
1949
23.8k
                (ctx, shared_signature_id, trampoline)
1950
23.8k
            }
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::log<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_replica_update<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::event::emit_event<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
23.8k
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
23.8k
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
23.8k
                /// calls the wrapped host function, and returns the translated
1807
23.8k
                /// result back to Wasm.
1808
23.8k
                ///
1809
23.8k
                /// Note that this shim's ABI must *exactly* match that expected
1810
23.8k
                /// by Cranelift, since Cranelift is generating raw function
1811
23.8k
                /// calls directly to this function.
1812
23.8k
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
23.8k
                    vmctx: *mut VMOpaqueContext,
1814
23.8k
                    caller_vmctx: *mut VMContext,
1815
23.8k
                    $( $args: $args::Abi, )*
1816
23.8k
                    retptr: R::Retptr,
1817
23.8k
                ) -> R::Abi
1818
23.8k
                where
1819
23.8k
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
23.8k
                    $( $args: WasmTy, )*
1821
23.8k
                    R: WasmRet,
1822
23.8k
                {
1823
23.8k
                    enum CallResult<U> {
1824
23.8k
                        Ok(U),
1825
23.8k
                        Trap(anyhow::Error),
1826
23.8k
                        Panic(Box<dyn std::any::Any + Send>),
1827
23.8k
                    }
1828
23.8k
1829
23.8k
                    // Note that this `result` is intentionally scoped into a
1830
23.8k
                    // separate block. Handling traps and panics will involve
1831
23.8k
                    // longjmp-ing from this function which means we won't run
1832
23.8k
                    // destructors. As a result anything requiring a destructor
1833
23.8k
                    // should be part of this block, and the long-jmp-ing
1834
23.8k
                    // happens after the block in handling `CallResult`.
1835
23.8k
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
23.8k
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
23.8k
                        let state = (*vmctx).host_state();
1838
23.8k
1839
23.8k
                        // Double-check ourselves in debug mode, but we control
1840
23.8k
                        // the `Any` here so an unsafe downcast should also
1841
23.8k
                        // work.
1842
23.8k
                        debug_assert!(state.is::<F>());
1843
23.8k
                        let func = &*(state as *const _ as *const F);
1844
23.8k
1845
23.8k
                        let ret = {
1846
23.8k
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
23.8k
                                    return R::fallible_from_trap(trap);
1849
23.8k
                                }
1850
23.8k
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
23.8k
                                let r = func(
1852
23.8k
                                    caller.sub_caller(),
1853
23.8k
                                    $( $args, )*
1854
23.8k
                                );
1855
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
23.8k
                                    return R::fallible_from_trap(trap);
1857
23.8k
                                }
1858
23.8k
                                r.into_fallible()
1859
23.8k
                            }))
1860
23.8k
                        };
1861
23.8k
1862
23.8k
                        // Note that we need to be careful when dealing with traps
1863
23.8k
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
23.8k
                        // that it's not unwinding and consequently no Rust
1865
23.8k
                        // destructors are run. We need to be careful to ensure that
1866
23.8k
                        // nothing on the stack needs a destructor when we exit
1867
23.8k
                        // abnormally from this `match`, e.g. on `Err`, on
1868
23.8k
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
23.8k
                        match ret {
1870
23.8k
                            Err(panic) => CallResult::Panic(panic),
1871
23.8k
                            Ok(ret) => {
1872
23.8k
                                // Because the wrapped function is not `unsafe`, we
1873
23.8k
                                // can't assume it returned a value that is
1874
23.8k
                                // compatible with this store.
1875
23.8k
                                if !ret.compatible_with_store(caller.store.0) {
1876
23.8k
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
23.8k
                                } else {
1878
23.8k
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
23.8k
                                        Ok(val) => CallResult::Ok(val),
1880
23.8k
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
23.8k
                                    }
1882
23.8k
                                }
1883
23.8k
1884
23.8k
                            }
1885
23.8k
                        }
1886
23.8k
                    });
1887
23.8k
1888
23.8k
                    match result {
1889
23.8k
                        CallResult::Ok(val) => val,
1890
23.8k
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
23.8k
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
23.8k
                    }
1893
23.8k
                }
1894
23.8k
1895
23.8k
                /// This trampoline allows host code to indirectly call the
1896
23.8k
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
23.8k
                /// happens to reference our wrapped function).
1898
23.8k
                ///
1899
23.8k
                /// It reads the arguments out of the incoming `args` array,
1900
23.8k
                /// calls the given function pointer, and then stores the result
1901
23.8k
                /// back into the `args` array.
1902
23.8k
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
23.8k
                    callee_vmctx: *mut VMOpaqueContext,
1904
23.8k
                    caller_vmctx: *mut VMContext,
1905
23.8k
                    ptr: *const VMFunctionBody,
1906
23.8k
                    args: *mut ValRaw,
1907
23.8k
                )
1908
23.8k
                where
1909
23.8k
                    $($args: WasmTy,)*
1910
23.8k
                    R: WasmRet,
1911
23.8k
                {
1912
23.8k
                    let ptr = mem::transmute::<
1913
23.8k
                        *const VMFunctionBody,
1914
23.8k
                        unsafe extern "C" fn(
1915
23.8k
                            *mut VMOpaqueContext,
1916
23.8k
                            *mut VMContext,
1917
23.8k
                            $( $args::Abi, )*
1918
23.8k
                            R::Retptr,
1919
23.8k
                        ) -> R::Abi,
1920
23.8k
                    >(ptr);
1921
23.8k
1922
23.8k
                    let mut _n = 0;
1923
23.8k
                    $(
1924
23.8k
                        let $args = $args::abi_from_raw(args.add(_n));
1925
23.8k
                        _n += 1;
1926
23.8k
                    )*
1927
23.8k
                    R::wrap_trampoline(args, |retptr| {
1928
23.8k
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
23.8k
                    });
1930
23.8k
                }
1931
23.8k
1932
23.8k
                let ty = R::func_type(
1933
23.8k
                    None::<ValType>.into_iter()
1934
23.8k
                        $(.chain(Some($args::valtype())))*
1935
23.8k
                );
1936
23.8k
1937
23.8k
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
23.8k
1939
23.8k
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
23.8k
1941
23.8k
                let ctx = unsafe {
1942
23.8k
                    VMHostFuncContext::new(
1943
23.8k
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
23.8k
                        shared_signature_id,
1945
23.8k
                        Box::new(self),
1946
23.8k
                    )
1947
23.8k
                };
1948
23.8k
1949
23.8k
                (ctx, shared_signature_id, trampoline)
1950
23.8k
            }
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<fvm::syscalls::vm::Never, fvm::syscalls::error::Abort>, fvm::syscalls::vm::exit<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
23.8k
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
23.8k
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
23.8k
                /// calls the wrapped host function, and returns the translated
1807
23.8k
                /// result back to Wasm.
1808
23.8k
                ///
1809
23.8k
                /// Note that this shim's ABI must *exactly* match that expected
1810
23.8k
                /// by Cranelift, since Cranelift is generating raw function
1811
23.8k
                /// calls directly to this function.
1812
23.8k
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
23.8k
                    vmctx: *mut VMOpaqueContext,
1814
23.8k
                    caller_vmctx: *mut VMContext,
1815
23.8k
                    $( $args: $args::Abi, )*
1816
23.8k
                    retptr: R::Retptr,
1817
23.8k
                ) -> R::Abi
1818
23.8k
                where
1819
23.8k
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
23.8k
                    $( $args: WasmTy, )*
1821
23.8k
                    R: WasmRet,
1822
23.8k
                {
1823
23.8k
                    enum CallResult<U> {
1824
23.8k
                        Ok(U),
1825
23.8k
                        Trap(anyhow::Error),
1826
23.8k
                        Panic(Box<dyn std::any::Any + Send>),
1827
23.8k
                    }
1828
23.8k
1829
23.8k
                    // Note that this `result` is intentionally scoped into a
1830
23.8k
                    // separate block. Handling traps and panics will involve
1831
23.8k
                    // longjmp-ing from this function which means we won't run
1832
23.8k
                    // destructors. As a result anything requiring a destructor
1833
23.8k
                    // should be part of this block, and the long-jmp-ing
1834
23.8k
                    // happens after the block in handling `CallResult`.
1835
23.8k
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
23.8k
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
23.8k
                        let state = (*vmctx).host_state();
1838
23.8k
1839
23.8k
                        // Double-check ourselves in debug mode, but we control
1840
23.8k
                        // the `Any` here so an unsafe downcast should also
1841
23.8k
                        // work.
1842
23.8k
                        debug_assert!(state.is::<F>());
1843
23.8k
                        let func = &*(state as *const _ as *const F);
1844
23.8k
1845
23.8k
                        let ret = {
1846
23.8k
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
23.8k
                                    return R::fallible_from_trap(trap);
1849
23.8k
                                }
1850
23.8k
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
23.8k
                                let r = func(
1852
23.8k
                                    caller.sub_caller(),
1853
23.8k
                                    $( $args, )*
1854
23.8k
                                );
1855
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
23.8k
                                    return R::fallible_from_trap(trap);
1857
23.8k
                                }
1858
23.8k
                                r.into_fallible()
1859
23.8k
                            }))
1860
23.8k
                        };
1861
23.8k
1862
23.8k
                        // Note that we need to be careful when dealing with traps
1863
23.8k
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
23.8k
                        // that it's not unwinding and consequently no Rust
1865
23.8k
                        // destructors are run. We need to be careful to ensure that
1866
23.8k
                        // nothing on the stack needs a destructor when we exit
1867
23.8k
                        // abnormally from this `match`, e.g. on `Err`, on
1868
23.8k
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
23.8k
                        match ret {
1870
23.8k
                            Err(panic) => CallResult::Panic(panic),
1871
23.8k
                            Ok(ret) => {
1872
23.8k
                                // Because the wrapped function is not `unsafe`, we
1873
23.8k
                                // can't assume it returned a value that is
1874
23.8k
                                // compatible with this store.
1875
23.8k
                                if !ret.compatible_with_store(caller.store.0) {
1876
23.8k
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
23.8k
                                } else {
1878
23.8k
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
23.8k
                                        Ok(val) => CallResult::Ok(val),
1880
23.8k
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
23.8k
                                    }
1882
23.8k
                                }
1883
23.8k
1884
23.8k
                            }
1885
23.8k
                        }
1886
23.8k
                    });
1887
23.8k
1888
23.8k
                    match result {
1889
23.8k
                        CallResult::Ok(val) => val,
1890
23.8k
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
23.8k
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
23.8k
                    }
1893
23.8k
                }
1894
23.8k
1895
23.8k
                /// This trampoline allows host code to indirectly call the
1896
23.8k
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
23.8k
                /// happens to reference our wrapped function).
1898
23.8k
                ///
1899
23.8k
                /// It reads the arguments out of the incoming `args` array,
1900
23.8k
                /// calls the given function pointer, and then stores the result
1901
23.8k
                /// back into the `args` array.
1902
23.8k
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
23.8k
                    callee_vmctx: *mut VMOpaqueContext,
1904
23.8k
                    caller_vmctx: *mut VMContext,
1905
23.8k
                    ptr: *const VMFunctionBody,
1906
23.8k
                    args: *mut ValRaw,
1907
23.8k
                )
1908
23.8k
                where
1909
23.8k
                    $($args: WasmTy,)*
1910
23.8k
                    R: WasmRet,
1911
23.8k
                {
1912
23.8k
                    let ptr = mem::transmute::<
1913
23.8k
                        *const VMFunctionBody,
1914
23.8k
                        unsafe extern "C" fn(
1915
23.8k
                            *mut VMOpaqueContext,
1916
23.8k
                            *mut VMContext,
1917
23.8k
                            $( $args::Abi, )*
1918
23.8k
                            R::Retptr,
1919
23.8k
                        ) -> R::Abi,
1920
23.8k
                    >(ptr);
1921
23.8k
1922
23.8k
                    let mut _n = 0;
1923
23.8k
                    $(
1924
23.8k
                        let $args = $args::abi_from_raw(args.add(_n));
1925
23.8k
                        _n += 1;
1926
23.8k
                    )*
1927
23.8k
                    R::wrap_trampoline(args, |retptr| {
1928
23.8k
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
23.8k
                    });
1930
23.8k
                }
1931
23.8k
1932
23.8k
                let ty = R::func_type(
1933
23.8k
                    None::<ValType>.into_iter()
1934
23.8k
                        $(.chain(Some($args::valtype())))*
1935
23.8k
                );
1936
23.8k
1937
23.8k
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
23.8k
1939
23.8k
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
23.8k
1941
23.8k
                let ctx = unsafe {
1942
23.8k
                    VMHostFuncContext::new(
1943
23.8k
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
23.8k
                        shared_signature_id,
1945
23.8k
                        Box::new(self),
1946
23.8k
                    )
1947
23.8k
                };
1948
23.8k
1949
23.8k
                (ctx, shared_signature_id, trampoline)
1950
23.8k
            }
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::next_actor_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<[u8; 65], fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::recover_secp_public_key<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
23.8k
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
23.8k
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
23.8k
                /// calls the wrapped host function, and returns the translated
1807
23.8k
                /// result back to Wasm.
1808
23.8k
                ///
1809
23.8k
                /// Note that this shim's ABI must *exactly* match that expected
1810
23.8k
                /// by Cranelift, since Cranelift is generating raw function
1811
23.8k
                /// calls directly to this function.
1812
23.8k
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
23.8k
                    vmctx: *mut VMOpaqueContext,
1814
23.8k
                    caller_vmctx: *mut VMContext,
1815
23.8k
                    $( $args: $args::Abi, )*
1816
23.8k
                    retptr: R::Retptr,
1817
23.8k
                ) -> R::Abi
1818
23.8k
                where
1819
23.8k
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
23.8k
                    $( $args: WasmTy, )*
1821
23.8k
                    R: WasmRet,
1822
23.8k
                {
1823
23.8k
                    enum CallResult<U> {
1824
23.8k
                        Ok(U),
1825
23.8k
                        Trap(anyhow::Error),
1826
23.8k
                        Panic(Box<dyn std::any::Any + Send>),
1827
23.8k
                    }
1828
23.8k
1829
23.8k
                    // Note that this `result` is intentionally scoped into a
1830
23.8k
                    // separate block. Handling traps and panics will involve
1831
23.8k
                    // longjmp-ing from this function which means we won't run
1832
23.8k
                    // destructors. As a result anything requiring a destructor
1833
23.8k
                    // should be part of this block, and the long-jmp-ing
1834
23.8k
                    // happens after the block in handling `CallResult`.
1835
23.8k
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
23.8k
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
23.8k
                        let state = (*vmctx).host_state();
1838
23.8k
1839
23.8k
                        // Double-check ourselves in debug mode, but we control
1840
23.8k
                        // the `Any` here so an unsafe downcast should also
1841
23.8k
                        // work.
1842
23.8k
                        debug_assert!(state.is::<F>());
1843
23.8k
                        let func = &*(state as *const _ as *const F);
1844
23.8k
1845
23.8k
                        let ret = {
1846
23.8k
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
23.8k
                                    return R::fallible_from_trap(trap);
1849
23.8k
                                }
1850
23.8k
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
23.8k
                                let r = func(
1852
23.8k
                                    caller.sub_caller(),
1853
23.8k
                                    $( $args, )*
1854
23.8k
                                );
1855
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
23.8k
                                    return R::fallible_from_trap(trap);
1857
23.8k
                                }
1858
23.8k
                                r.into_fallible()
1859
23.8k
                            }))
1860
23.8k
                        };
1861
23.8k
1862
23.8k
                        // Note that we need to be careful when dealing with traps
1863
23.8k
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
23.8k
                        // that it's not unwinding and consequently no Rust
1865
23.8k
                        // destructors are run. We need to be careful to ensure that
1866
23.8k
                        // nothing on the stack needs a destructor when we exit
1867
23.8k
                        // abnormally from this `match`, e.g. on `Err`, on
1868
23.8k
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
23.8k
                        match ret {
1870
23.8k
                            Err(panic) => CallResult::Panic(panic),
1871
23.8k
                            Ok(ret) => {
1872
23.8k
                                // Because the wrapped function is not `unsafe`, we
1873
23.8k
                                // can't assume it returned a value that is
1874
23.8k
                                // compatible with this store.
1875
23.8k
                                if !ret.compatible_with_store(caller.store.0) {
1876
23.8k
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
23.8k
                                } else {
1878
23.8k
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
23.8k
                                        Ok(val) => CallResult::Ok(val),
1880
23.8k
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
23.8k
                                    }
1882
23.8k
                                }
1883
23.8k
1884
23.8k
                            }
1885
23.8k
                        }
1886
23.8k
                    });
1887
23.8k
1888
23.8k
                    match result {
1889
23.8k
                        CallResult::Ok(val) => val,
1890
23.8k
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
23.8k
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
23.8k
                    }
1893
23.8k
                }
1894
23.8k
1895
23.8k
                /// This trampoline allows host code to indirectly call the
1896
23.8k
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
23.8k
                /// happens to reference our wrapped function).
1898
23.8k
                ///
1899
23.8k
                /// It reads the arguments out of the incoming `args` array,
1900
23.8k
                /// calls the given function pointer, and then stores the result
1901
23.8k
                /// back into the `args` array.
1902
23.8k
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
23.8k
                    callee_vmctx: *mut VMOpaqueContext,
1904
23.8k
                    caller_vmctx: *mut VMContext,
1905
23.8k
                    ptr: *const VMFunctionBody,
1906
23.8k
                    args: *mut ValRaw,
1907
23.8k
                )
1908
23.8k
                where
1909
23.8k
                    $($args: WasmTy,)*
1910
23.8k
                    R: WasmRet,
1911
23.8k
                {
1912
23.8k
                    let ptr = mem::transmute::<
1913
23.8k
                        *const VMFunctionBody,
1914
23.8k
                        unsafe extern "C" fn(
1915
23.8k
                            *mut VMOpaqueContext,
1916
23.8k
                            *mut VMContext,
1917
23.8k
                            $( $args::Abi, )*
1918
23.8k
                            R::Retptr,
1919
23.8k
                        ) -> R::Abi,
1920
23.8k
                    >(ptr);
1921
23.8k
1922
23.8k
                    let mut _n = 0;
1923
23.8k
                    $(
1924
23.8k
                        let $args = $args::abi_from_raw(args.add(_n));
1925
23.8k
                        _n += 1;
1926
23.8k
                    )*
1927
23.8k
                    R::wrap_trampoline(args, |retptr| {
1928
23.8k
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
23.8k
                    });
1930
23.8k
                }
1931
23.8k
1932
23.8k
                let ty = R::func_type(
1933
23.8k
                    None::<ValType>.into_iter()
1934
23.8k
                        $(.chain(Some($args::valtype())))*
1935
23.8k
                );
1936
23.8k
1937
23.8k
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
23.8k
1939
23.8k
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
23.8k
1941
23.8k
                let ctx = unsafe {
1942
23.8k
                    VMHostFuncContext::new(
1943
23.8k
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
23.8k
                        shared_signature_id,
1945
23.8k
                        Box::new(self),
1946
23.8k
                    )
1947
23.8k
                };
1948
23.8k
1949
23.8k
                (ctx, shared_signature_id, trampoline)
1950
23.8k
            }
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u64, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_link<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u64, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
23.8k
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
23.8k
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
23.8k
                /// calls the wrapped host function, and returns the translated
1807
23.8k
                /// result back to Wasm.
1808
23.8k
                ///
1809
23.8k
                /// Note that this shim's ABI must *exactly* match that expected
1810
23.8k
                /// by Cranelift, since Cranelift is generating raw function
1811
23.8k
                /// calls directly to this function.
1812
23.8k
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
23.8k
                    vmctx: *mut VMOpaqueContext,
1814
23.8k
                    caller_vmctx: *mut VMContext,
1815
23.8k
                    $( $args: $args::Abi, )*
1816
23.8k
                    retptr: R::Retptr,
1817
23.8k
                ) -> R::Abi
1818
23.8k
                where
1819
23.8k
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
23.8k
                    $( $args: WasmTy, )*
1821
23.8k
                    R: WasmRet,
1822
23.8k
                {
1823
23.8k
                    enum CallResult<U> {
1824
23.8k
                        Ok(U),
1825
23.8k
                        Trap(anyhow::Error),
1826
23.8k
                        Panic(Box<dyn std::any::Any + Send>),
1827
23.8k
                    }
1828
23.8k
1829
23.8k
                    // Note that this `result` is intentionally scoped into a
1830
23.8k
                    // separate block. Handling traps and panics will involve
1831
23.8k
                    // longjmp-ing from this function which means we won't run
1832
23.8k
                    // destructors. As a result anything requiring a destructor
1833
23.8k
                    // should be part of this block, and the long-jmp-ing
1834
23.8k
                    // happens after the block in handling `CallResult`.
1835
23.8k
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
23.8k
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
23.8k
                        let state = (*vmctx).host_state();
1838
23.8k
1839
23.8k
                        // Double-check ourselves in debug mode, but we control
1840
23.8k
                        // the `Any` here so an unsafe downcast should also
1841
23.8k
                        // work.
1842
23.8k
                        debug_assert!(state.is::<F>());
1843
23.8k
                        let func = &*(state as *const _ as *const F);
1844
23.8k
1845
23.8k
                        let ret = {
1846
23.8k
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
23.8k
                                    return R::fallible_from_trap(trap);
1849
23.8k
                                }
1850
23.8k
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
23.8k
                                let r = func(
1852
23.8k
                                    caller.sub_caller(),
1853
23.8k
                                    $( $args, )*
1854
23.8k
                                );
1855
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
23.8k
                                    return R::fallible_from_trap(trap);
1857
23.8k
                                }
1858
23.8k
                                r.into_fallible()
1859
23.8k
                            }))
1860
23.8k
                        };
1861
23.8k
1862
23.8k
                        // Note that we need to be careful when dealing with traps
1863
23.8k
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
23.8k
                        // that it's not unwinding and consequently no Rust
1865
23.8k
                        // destructors are run. We need to be careful to ensure that
1866
23.8k
                        // nothing on the stack needs a destructor when we exit
1867
23.8k
                        // abnormally from this `match`, e.g. on `Err`, on
1868
23.8k
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
23.8k
                        match ret {
1870
23.8k
                            Err(panic) => CallResult::Panic(panic),
1871
23.8k
                            Ok(ret) => {
1872
23.8k
                                // Because the wrapped function is not `unsafe`, we
1873
23.8k
                                // can't assume it returned a value that is
1874
23.8k
                                // compatible with this store.
1875
23.8k
                                if !ret.compatible_with_store(caller.store.0) {
1876
23.8k
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
23.8k
                                } else {
1878
23.8k
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
23.8k
                                        Ok(val) => CallResult::Ok(val),
1880
23.8k
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
23.8k
                                    }
1882
23.8k
                                }
1883
23.8k
1884
23.8k
                            }
1885
23.8k
                        }
1886
23.8k
                    });
1887
23.8k
1888
23.8k
                    match result {
1889
23.8k
                        CallResult::Ok(val) => val,
1890
23.8k
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
23.8k
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
23.8k
                    }
1893
23.8k
                }
1894
23.8k
1895
23.8k
                /// This trampoline allows host code to indirectly call the
1896
23.8k
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
23.8k
                /// happens to reference our wrapped function).
1898
23.8k
                ///
1899
23.8k
                /// It reads the arguments out of the incoming `args` array,
1900
23.8k
                /// calls the given function pointer, and then stores the result
1901
23.8k
                /// back into the `args` array.
1902
23.8k
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
23.8k
                    callee_vmctx: *mut VMOpaqueContext,
1904
23.8k
                    caller_vmctx: *mut VMContext,
1905
23.8k
                    ptr: *const VMFunctionBody,
1906
23.8k
                    args: *mut ValRaw,
1907
23.8k
                )
1908
23.8k
                where
1909
23.8k
                    $($args: WasmTy,)*
1910
23.8k
                    R: WasmRet,
1911
23.8k
                {
1912
23.8k
                    let ptr = mem::transmute::<
1913
23.8k
                        *const VMFunctionBody,
1914
23.8k
                        unsafe extern "C" fn(
1915
23.8k
                            *mut VMOpaqueContext,
1916
23.8k
                            *mut VMContext,
1917
23.8k
                            $( $args::Abi, )*
1918
23.8k
                            R::Retptr,
1919
23.8k
                        ) -> R::Abi,
1920
23.8k
                    >(ptr);
1921
23.8k
1922
23.8k
                    let mut _n = 0;
1923
23.8k
                    $(
1924
23.8k
                        let $args = $args::abi_from_raw(args.add(_n));
1925
23.8k
                        _n += 1;
1926
23.8k
                    )*
1927
23.8k
                    R::wrap_trampoline(args, |retptr| {
1928
23.8k
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
23.8k
                    });
1930
23.8k
                }
1931
23.8k
1932
23.8k
                let ty = R::func_type(
1933
23.8k
                    None::<ValType>.into_iter()
1934
23.8k
                        $(.chain(Some($args::valtype())))*
1935
23.8k
                );
1936
23.8k
1937
23.8k
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
23.8k
1939
23.8k
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
23.8k
1941
23.8k
                let ctx = unsafe {
1942
23.8k
                    VMHostFuncContext::new(
1943
23.8k
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
23.8k
                        shared_signature_id,
1945
23.8k
                        Box::new(self),
1946
23.8k
                    )
1947
23.8k
                };
1948
23.8k
1949
23.8k
                (ctx, shared_signature_id, trampoline)
1950
23.8k
            }
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::current_balance<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
23.8k
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
23.8k
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
23.8k
                /// calls the wrapped host function, and returns the translated
1807
23.8k
                /// result back to Wasm.
1808
23.8k
                ///
1809
23.8k
                /// Note that this shim's ABI must *exactly* match that expected
1810
23.8k
                /// by Cranelift, since Cranelift is generating raw function
1811
23.8k
                /// calls directly to this function.
1812
23.8k
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
23.8k
                    vmctx: *mut VMOpaqueContext,
1814
23.8k
                    caller_vmctx: *mut VMContext,
1815
23.8k
                    $( $args: $args::Abi, )*
1816
23.8k
                    retptr: R::Retptr,
1817
23.8k
                ) -> R::Abi
1818
23.8k
                where
1819
23.8k
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
23.8k
                    $( $args: WasmTy, )*
1821
23.8k
                    R: WasmRet,
1822
23.8k
                {
1823
23.8k
                    enum CallResult<U> {
1824
23.8k
                        Ok(U),
1825
23.8k
                        Trap(anyhow::Error),
1826
23.8k
                        Panic(Box<dyn std::any::Any + Send>),
1827
23.8k
                    }
1828
23.8k
1829
23.8k
                    // Note that this `result` is intentionally scoped into a
1830
23.8k
                    // separate block. Handling traps and panics will involve
1831
23.8k
                    // longjmp-ing from this function which means we won't run
1832
23.8k
                    // destructors. As a result anything requiring a destructor
1833
23.8k
                    // should be part of this block, and the long-jmp-ing
1834
23.8k
                    // happens after the block in handling `CallResult`.
1835
23.8k
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
23.8k
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
23.8k
                        let state = (*vmctx).host_state();
1838
23.8k
1839
23.8k
                        // Double-check ourselves in debug mode, but we control
1840
23.8k
                        // the `Any` here so an unsafe downcast should also
1841
23.8k
                        // work.
1842
23.8k
                        debug_assert!(state.is::<F>());
1843
23.8k
                        let func = &*(state as *const _ as *const F);
1844
23.8k
1845
23.8k
                        let ret = {
1846
23.8k
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
23.8k
                                    return R::fallible_from_trap(trap);
1849
23.8k
                                }
1850
23.8k
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
23.8k
                                let r = func(
1852
23.8k
                                    caller.sub_caller(),
1853
23.8k
                                    $( $args, )*
1854
23.8k
                                );
1855
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
23.8k
                                    return R::fallible_from_trap(trap);
1857
23.8k
                                }
1858
23.8k
                                r.into_fallible()
1859
23.8k
                            }))
1860
23.8k
                        };
1861
23.8k
1862
23.8k
                        // Note that we need to be careful when dealing with traps
1863
23.8k
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
23.8k
                        // that it's not unwinding and consequently no Rust
1865
23.8k
                        // destructors are run. We need to be careful to ensure that
1866
23.8k
                        // nothing on the stack needs a destructor when we exit
1867
23.8k
                        // abnormally from this `match`, e.g. on `Err`, on
1868
23.8k
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
23.8k
                        match ret {
1870
23.8k
                            Err(panic) => CallResult::Panic(panic),
1871
23.8k
                            Ok(ret) => {
1872
23.8k
                                // Because the wrapped function is not `unsafe`, we
1873
23.8k
                                // can't assume it returned a value that is
1874
23.8k
                                // compatible with this store.
1875
23.8k
                                if !ret.compatible_with_store(caller.store.0) {
1876
23.8k
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
23.8k
                                } else {
1878
23.8k
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
23.8k
                                        Ok(val) => CallResult::Ok(val),
1880
23.8k
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
23.8k
                                    }
1882
23.8k
                                }
1883
23.8k
1884
23.8k
                            }
1885
23.8k
                        }
1886
23.8k
                    });
1887
23.8k
1888
23.8k
                    match result {
1889
23.8k
                        CallResult::Ok(val) => val,
1890
23.8k
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
23.8k
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
23.8k
                    }
1893
23.8k
                }
1894
23.8k
1895
23.8k
                /// This trampoline allows host code to indirectly call the
1896
23.8k
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
23.8k
                /// happens to reference our wrapped function).
1898
23.8k
                ///
1899
23.8k
                /// It reads the arguments out of the incoming `args` array,
1900
23.8k
                /// calls the given function pointer, and then stores the result
1901
23.8k
                /// back into the `args` array.
1902
23.8k
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
23.8k
                    callee_vmctx: *mut VMOpaqueContext,
1904
23.8k
                    caller_vmctx: *mut VMContext,
1905
23.8k
                    ptr: *const VMFunctionBody,
1906
23.8k
                    args: *mut ValRaw,
1907
23.8k
                )
1908
23.8k
                where
1909
23.8k
                    $($args: WasmTy,)*
1910
23.8k
                    R: WasmRet,
1911
23.8k
                {
1912
23.8k
                    let ptr = mem::transmute::<
1913
23.8k
                        *const VMFunctionBody,
1914
23.8k
                        unsafe extern "C" fn(
1915
23.8k
                            *mut VMOpaqueContext,
1916
23.8k
                            *mut VMContext,
1917
23.8k
                            $( $args::Abi, )*
1918
23.8k
                            R::Retptr,
1919
23.8k
                        ) -> R::Abi,
1920
23.8k
                    >(ptr);
1921
23.8k
1922
23.8k
                    let mut _n = 0;
1923
23.8k
                    $(
1924
23.8k
                        let $args = $args::abi_from_raw(args.add(_n));
1925
23.8k
                        _n += 1;
1926
23.8k
                    )*
1927
23.8k
                    R::wrap_trampoline(args, |retptr| {
1928
23.8k
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
23.8k
                    });
1930
23.8k
                }
1931
23.8k
1932
23.8k
                let ty = R::func_type(
1933
23.8k
                    None::<ValType>.into_iter()
1934
23.8k
                        $(.chain(Some($args::valtype())))*
1935
23.8k
                );
1936
23.8k
1937
23.8k
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
23.8k
1939
23.8k
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
23.8k
1941
23.8k
                let ctx = unsafe {
1942
23.8k
                    VMHostFuncContext::new(
1943
23.8k
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
23.8k
                        shared_signature_id,
1945
23.8k
                        Box::new(self),
1946
23.8k
                    )
1947
23.8k
                };
1948
23.8k
1949
23.8k
                (ctx, shared_signature_id, trampoline)
1950
23.8k
            }
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32, u32, u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_signature<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, u32, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
23.8k
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
23.8k
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
23.8k
                /// calls the wrapped host function, and returns the translated
1807
23.8k
                /// result back to Wasm.
1808
23.8k
                ///
1809
23.8k
                /// Note that this shim's ABI must *exactly* match that expected
1810
23.8k
                /// by Cranelift, since Cranelift is generating raw function
1811
23.8k
                /// calls directly to this function.
1812
23.8k
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
23.8k
                    vmctx: *mut VMOpaqueContext,
1814
23.8k
                    caller_vmctx: *mut VMContext,
1815
23.8k
                    $( $args: $args::Abi, )*
1816
23.8k
                    retptr: R::Retptr,
1817
23.8k
                ) -> R::Abi
1818
23.8k
                where
1819
23.8k
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
23.8k
                    $( $args: WasmTy, )*
1821
23.8k
                    R: WasmRet,
1822
23.8k
                {
1823
23.8k
                    enum CallResult<U> {
1824
23.8k
                        Ok(U),
1825
23.8k
                        Trap(anyhow::Error),
1826
23.8k
                        Panic(Box<dyn std::any::Any + Send>),
1827
23.8k
                    }
1828
23.8k
1829
23.8k
                    // Note that this `result` is intentionally scoped into a
1830
23.8k
                    // separate block. Handling traps and panics will involve
1831
23.8k
                    // longjmp-ing from this function which means we won't run
1832
23.8k
                    // destructors. As a result anything requiring a destructor
1833
23.8k
                    // should be part of this block, and the long-jmp-ing
1834
23.8k
                    // happens after the block in handling `CallResult`.
1835
23.8k
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
23.8k
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
23.8k
                        let state = (*vmctx).host_state();
1838
23.8k
1839
23.8k
                        // Double-check ourselves in debug mode, but we control
1840
23.8k
                        // the `Any` here so an unsafe downcast should also
1841
23.8k
                        // work.
1842
23.8k
                        debug_assert!(state.is::<F>());
1843
23.8k
                        let func = &*(state as *const _ as *const F);
1844
23.8k
1845
23.8k
                        let ret = {
1846
23.8k
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
23.8k
                                    return R::fallible_from_trap(trap);
1849
23.8k
                                }
1850
23.8k
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
23.8k
                                let r = func(
1852
23.8k
                                    caller.sub_caller(),
1853
23.8k
                                    $( $args, )*
1854
23.8k
                                );
1855
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
23.8k
                                    return R::fallible_from_trap(trap);
1857
23.8k
                                }
1858
23.8k
                                r.into_fallible()
1859
23.8k
                            }))
1860
23.8k
                        };
1861
23.8k
1862
23.8k
                        // Note that we need to be careful when dealing with traps
1863
23.8k
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
23.8k
                        // that it's not unwinding and consequently no Rust
1865
23.8k
                        // destructors are run. We need to be careful to ensure that
1866
23.8k
                        // nothing on the stack needs a destructor when we exit
1867
23.8k
                        // abnormally from this `match`, e.g. on `Err`, on
1868
23.8k
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
23.8k
                        match ret {
1870
23.8k
                            Err(panic) => CallResult::Panic(panic),
1871
23.8k
                            Ok(ret) => {
1872
23.8k
                                // Because the wrapped function is not `unsafe`, we
1873
23.8k
                                // can't assume it returned a value that is
1874
23.8k
                                // compatible with this store.
1875
23.8k
                                if !ret.compatible_with_store(caller.store.0) {
1876
23.8k
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
23.8k
                                } else {
1878
23.8k
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
23.8k
                                        Ok(val) => CallResult::Ok(val),
1880
23.8k
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
23.8k
                                    }
1882
23.8k
                                }
1883
23.8k
1884
23.8k
                            }
1885
23.8k
                        }
1886
23.8k
                    });
1887
23.8k
1888
23.8k
                    match result {
1889
23.8k
                        CallResult::Ok(val) => val,
1890
23.8k
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
23.8k
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
23.8k
                    }
1893
23.8k
                }
1894
23.8k
1895
23.8k
                /// This trampoline allows host code to indirectly call the
1896
23.8k
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
23.8k
                /// happens to reference our wrapped function).
1898
23.8k
                ///
1899
23.8k
                /// It reads the arguments out of the incoming `args` array,
1900
23.8k
                /// calls the given function pointer, and then stores the result
1901
23.8k
                /// back into the `args` array.
1902
23.8k
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
23.8k
                    callee_vmctx: *mut VMOpaqueContext,
1904
23.8k
                    caller_vmctx: *mut VMContext,
1905
23.8k
                    ptr: *const VMFunctionBody,
1906
23.8k
                    args: *mut ValRaw,
1907
23.8k
                )
1908
23.8k
                where
1909
23.8k
                    $($args: WasmTy,)*
1910
23.8k
                    R: WasmRet,
1911
23.8k
                {
1912
23.8k
                    let ptr = mem::transmute::<
1913
23.8k
                        *const VMFunctionBody,
1914
23.8k
                        unsafe extern "C" fn(
1915
23.8k
                            *mut VMOpaqueContext,
1916
23.8k
                            *mut VMContext,
1917
23.8k
                            $( $args::Abi, )*
1918
23.8k
                            R::Retptr,
1919
23.8k
                        ) -> R::Abi,
1920
23.8k
                    >(ptr);
1921
23.8k
1922
23.8k
                    let mut _n = 0;
1923
23.8k
                    $(
1924
23.8k
                        let $args = $args::abi_from_raw(args.add(_n));
1925
23.8k
                        _n += 1;
1926
23.8k
                    )*
1927
23.8k
                    R::wrap_trampoline(args, |retptr| {
1928
23.8k
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
23.8k
                    });
1930
23.8k
                }
1931
23.8k
1932
23.8k
                let ty = R::func_type(
1933
23.8k
                    None::<ValType>.into_iter()
1934
23.8k
                        $(.chain(Some($args::valtype())))*
1935
23.8k
                );
1936
23.8k
1937
23.8k
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
23.8k
1939
23.8k
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
23.8k
1941
23.8k
                let ctx = unsafe {
1942
23.8k
                    VMHostFuncContext::new(
1943
23.8k
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
23.8k
                        shared_signature_id,
1945
23.8k
                        Box::new(self),
1946
23.8k
                    )
1947
23.8k
                };
1948
23.8k
1949
23.8k
                (ctx, shared_signature_id, trampoline)
1950
23.8k
            }
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::root<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32, u32, u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_signature<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_post<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
23.8k
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
23.8k
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
23.8k
                /// calls the wrapped host function, and returns the translated
1807
23.8k
                /// result back to Wasm.
1808
23.8k
                ///
1809
23.8k
                /// Note that this shim's ABI must *exactly* match that expected
1810
23.8k
                /// by Cranelift, since Cranelift is generating raw function
1811
23.8k
                /// calls directly to this function.
1812
23.8k
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
23.8k
                    vmctx: *mut VMOpaqueContext,
1814
23.8k
                    caller_vmctx: *mut VMContext,
1815
23.8k
                    $( $args: $args::Abi, )*
1816
23.8k
                    retptr: R::Retptr,
1817
23.8k
                ) -> R::Abi
1818
23.8k
                where
1819
23.8k
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
23.8k
                    $( $args: WasmTy, )*
1821
23.8k
                    R: WasmRet,
1822
23.8k
                {
1823
23.8k
                    enum CallResult<U> {
1824
23.8k
                        Ok(U),
1825
23.8k
                        Trap(anyhow::Error),
1826
23.8k
                        Panic(Box<dyn std::any::Any + Send>),
1827
23.8k
                    }
1828
23.8k
1829
23.8k
                    // Note that this `result` is intentionally scoped into a
1830
23.8k
                    // separate block. Handling traps and panics will involve
1831
23.8k
                    // longjmp-ing from this function which means we won't run
1832
23.8k
                    // destructors. As a result anything requiring a destructor
1833
23.8k
                    // should be part of this block, and the long-jmp-ing
1834
23.8k
                    // happens after the block in handling `CallResult`.
1835
23.8k
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
23.8k
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
23.8k
                        let state = (*vmctx).host_state();
1838
23.8k
1839
23.8k
                        // Double-check ourselves in debug mode, but we control
1840
23.8k
                        // the `Any` here so an unsafe downcast should also
1841
23.8k
                        // work.
1842
23.8k
                        debug_assert!(state.is::<F>());
1843
23.8k
                        let func = &*(state as *const _ as *const F);
1844
23.8k
1845
23.8k
                        let ret = {
1846
23.8k
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
23.8k
                                    return R::fallible_from_trap(trap);
1849
23.8k
                                }
1850
23.8k
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
23.8k
                                let r = func(
1852
23.8k
                                    caller.sub_caller(),
1853
23.8k
                                    $( $args, )*
1854
23.8k
                                );
1855
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
23.8k
                                    return R::fallible_from_trap(trap);
1857
23.8k
                                }
1858
23.8k
                                r.into_fallible()
1859
23.8k
                            }))
1860
23.8k
                        };
1861
23.8k
1862
23.8k
                        // Note that we need to be careful when dealing with traps
1863
23.8k
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
23.8k
                        // that it's not unwinding and consequently no Rust
1865
23.8k
                        // destructors are run. We need to be careful to ensure that
1866
23.8k
                        // nothing on the stack needs a destructor when we exit
1867
23.8k
                        // abnormally from this `match`, e.g. on `Err`, on
1868
23.8k
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
23.8k
                        match ret {
1870
23.8k
                            Err(panic) => CallResult::Panic(panic),
1871
23.8k
                            Ok(ret) => {
1872
23.8k
                                // Because the wrapped function is not `unsafe`, we
1873
23.8k
                                // can't assume it returned a value that is
1874
23.8k
                                // compatible with this store.
1875
23.8k
                                if !ret.compatible_with_store(caller.store.0) {
1876
23.8k
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
23.8k
                                } else {
1878
23.8k
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
23.8k
                                        Ok(val) => CallResult::Ok(val),
1880
23.8k
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
23.8k
                                    }
1882
23.8k
                                }
1883
23.8k
1884
23.8k
                            }
1885
23.8k
                        }
1886
23.8k
                    });
1887
23.8k
1888
23.8k
                    match result {
1889
23.8k
                        CallResult::Ok(val) => val,
1890
23.8k
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
23.8k
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
23.8k
                    }
1893
23.8k
                }
1894
23.8k
1895
23.8k
                /// This trampoline allows host code to indirectly call the
1896
23.8k
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
23.8k
                /// happens to reference our wrapped function).
1898
23.8k
                ///
1899
23.8k
                /// It reads the arguments out of the incoming `args` array,
1900
23.8k
                /// calls the given function pointer, and then stores the result
1901
23.8k
                /// back into the `args` array.
1902
23.8k
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
23.8k
                    callee_vmctx: *mut VMOpaqueContext,
1904
23.8k
                    caller_vmctx: *mut VMContext,
1905
23.8k
                    ptr: *const VMFunctionBody,
1906
23.8k
                    args: *mut ValRaw,
1907
23.8k
                )
1908
23.8k
                where
1909
23.8k
                    $($args: WasmTy,)*
1910
23.8k
                    R: WasmRet,
1911
23.8k
                {
1912
23.8k
                    let ptr = mem::transmute::<
1913
23.8k
                        *const VMFunctionBody,
1914
23.8k
                        unsafe extern "C" fn(
1915
23.8k
                            *mut VMOpaqueContext,
1916
23.8k
                            *mut VMContext,
1917
23.8k
                            $( $args::Abi, )*
1918
23.8k
                            R::Retptr,
1919
23.8k
                        ) -> R::Abi,
1920
23.8k
                    >(ptr);
1921
23.8k
1922
23.8k
                    let mut _n = 0;
1923
23.8k
                    $(
1924
23.8k
                        let $args = $args::abi_from_raw(args.add(_n));
1925
23.8k
                        _n += 1;
1926
23.8k
                    )*
1927
23.8k
                    R::wrap_trampoline(args, |retptr| {
1928
23.8k
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
23.8k
                    });
1930
23.8k
                }
1931
23.8k
1932
23.8k
                let ty = R::func_type(
1933
23.8k
                    None::<ValType>.into_iter()
1934
23.8k
                        $(.chain(Some($args::valtype())))*
1935
23.8k
                );
1936
23.8k
1937
23.8k
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
23.8k
1939
23.8k
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
23.8k
1941
23.8k
                let ctx = unsafe {
1942
23.8k
                    VMHostFuncContext::new(
1943
23.8k
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
23.8k
                        shared_signature_id,
1945
23.8k
                        Box::new(self),
1946
23.8k
                    )
1947
23.8k
                };
1948
23.8k
1949
23.8k
                (ctx, shared_signature_id, trampoline)
1950
23.8k
            }
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_builtin_actor_type<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
23.8k
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
23.8k
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
23.8k
                /// calls the wrapped host function, and returns the translated
1807
23.8k
                /// result back to Wasm.
1808
23.8k
                ///
1809
23.8k
                /// Note that this shim's ABI must *exactly* match that expected
1810
23.8k
                /// by Cranelift, since Cranelift is generating raw function
1811
23.8k
                /// calls directly to this function.
1812
23.8k
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
23.8k
                    vmctx: *mut VMOpaqueContext,
1814
23.8k
                    caller_vmctx: *mut VMContext,
1815
23.8k
                    $( $args: $args::Abi, )*
1816
23.8k
                    retptr: R::Retptr,
1817
23.8k
                ) -> R::Abi
1818
23.8k
                where
1819
23.8k
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
23.8k
                    $( $args: WasmTy, )*
1821
23.8k
                    R: WasmRet,
1822
23.8k
                {
1823
23.8k
                    enum CallResult<U> {
1824
23.8k
                        Ok(U),
1825
23.8k
                        Trap(anyhow::Error),
1826
23.8k
                        Panic(Box<dyn std::any::Any + Send>),
1827
23.8k
                    }
1828
23.8k
1829
23.8k
                    // Note that this `result` is intentionally scoped into a
1830
23.8k
                    // separate block. Handling traps and panics will involve
1831
23.8k
                    // longjmp-ing from this function which means we won't run
1832
23.8k
                    // destructors. As a result anything requiring a destructor
1833
23.8k
                    // should be part of this block, and the long-jmp-ing
1834
23.8k
                    // happens after the block in handling `CallResult`.
1835
23.8k
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
23.8k
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
23.8k
                        let state = (*vmctx).host_state();
1838
23.8k
1839
23.8k
                        // Double-check ourselves in debug mode, but we control
1840
23.8k
                        // the `Any` here so an unsafe downcast should also
1841
23.8k
                        // work.
1842
23.8k
                        debug_assert!(state.is::<F>());
1843
23.8k
                        let func = &*(state as *const _ as *const F);
1844
23.8k
1845
23.8k
                        let ret = {
1846
23.8k
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
23.8k
                                    return R::fallible_from_trap(trap);
1849
23.8k
                                }
1850
23.8k
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
23.8k
                                let r = func(
1852
23.8k
                                    caller.sub_caller(),
1853
23.8k
                                    $( $args, )*
1854
23.8k
                                );
1855
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
23.8k
                                    return R::fallible_from_trap(trap);
1857
23.8k
                                }
1858
23.8k
                                r.into_fallible()
1859
23.8k
                            }))
1860
23.8k
                        };
1861
23.8k
1862
23.8k
                        // Note that we need to be careful when dealing with traps
1863
23.8k
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
23.8k
                        // that it's not unwinding and consequently no Rust
1865
23.8k
                        // destructors are run. We need to be careful to ensure that
1866
23.8k
                        // nothing on the stack needs a destructor when we exit
1867
23.8k
                        // abnormally from this `match`, e.g. on `Err`, on
1868
23.8k
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
23.8k
                        match ret {
1870
23.8k
                            Err(panic) => CallResult::Panic(panic),
1871
23.8k
                            Ok(ret) => {
1872
23.8k
                                // Because the wrapped function is not `unsafe`, we
1873
23.8k
                                // can't assume it returned a value that is
1874
23.8k
                                // compatible with this store.
1875
23.8k
                                if !ret.compatible_with_store(caller.store.0) {
1876
23.8k
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
23.8k
                                } else {
1878
23.8k
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
23.8k
                                        Ok(val) => CallResult::Ok(val),
1880
23.8k
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
23.8k
                                    }
1882
23.8k
                                }
1883
23.8k
1884
23.8k
                            }
1885
23.8k
                        }
1886
23.8k
                    });
1887
23.8k
1888
23.8k
                    match result {
1889
23.8k
                        CallResult::Ok(val) => val,
1890
23.8k
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
23.8k
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
23.8k
                    }
1893
23.8k
                }
1894
23.8k
1895
23.8k
                /// This trampoline allows host code to indirectly call the
1896
23.8k
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
23.8k
                /// happens to reference our wrapped function).
1898
23.8k
                ///
1899
23.8k
                /// It reads the arguments out of the incoming `args` array,
1900
23.8k
                /// calls the given function pointer, and then stores the result
1901
23.8k
                /// back into the `args` array.
1902
23.8k
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
23.8k
                    callee_vmctx: *mut VMOpaqueContext,
1904
23.8k
                    caller_vmctx: *mut VMContext,
1905
23.8k
                    ptr: *const VMFunctionBody,
1906
23.8k
                    args: *mut ValRaw,
1907
23.8k
                )
1908
23.8k
                where
1909
23.8k
                    $($args: WasmTy,)*
1910
23.8k
                    R: WasmRet,
1911
23.8k
                {
1912
23.8k
                    let ptr = mem::transmute::<
1913
23.8k
                        *const VMFunctionBody,
1914
23.8k
                        unsafe extern "C" fn(
1915
23.8k
                            *mut VMOpaqueContext,
1916
23.8k
                            *mut VMContext,
1917
23.8k
                            $( $args::Abi, )*
1918
23.8k
                            R::Retptr,
1919
23.8k
                        ) -> R::Abi,
1920
23.8k
                    >(ptr);
1921
23.8k
1922
23.8k
                    let mut _n = 0;
1923
23.8k
                    $(
1924
23.8k
                        let $args = $args::abi_from_raw(args.add(_n));
1925
23.8k
                        _n += 1;
1926
23.8k
                    )*
1927
23.8k
                    R::wrap_trampoline(args, |retptr| {
1928
23.8k
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
23.8k
                    });
1930
23.8k
                }
1931
23.8k
1932
23.8k
                let ty = R::func_type(
1933
23.8k
                    None::<ValType>.into_iter()
1934
23.8k
                        $(.chain(Some($args::valtype())))*
1935
23.8k
                );
1936
23.8k
1937
23.8k
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
23.8k
1939
23.8k
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
23.8k
1941
23.8k
                let ctx = unsafe {
1942
23.8k
                    VMHostFuncContext::new(
1943
23.8k
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
23.8k
                        shared_signature_id,
1945
23.8k
                        Box::new(self),
1946
23.8k
                    )
1947
23.8k
                };
1948
23.8k
1949
23.8k
                (ctx, shared_signature_id, trampoline)
1950
23.8k
            }
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<u64, fvm::kernel::error::ExecutionError>, fvm::syscalls::gas::available<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>,), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::out::network::NetworkContext, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::context<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>,), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::next_actor_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
23.8k
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
23.8k
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
23.8k
                /// calls the wrapped host function, and returns the translated
1807
23.8k
                /// result back to Wasm.
1808
23.8k
                ///
1809
23.8k
                /// Note that this shim's ABI must *exactly* match that expected
1810
23.8k
                /// by Cranelift, since Cranelift is generating raw function
1811
23.8k
                /// calls directly to this function.
1812
23.8k
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
23.8k
                    vmctx: *mut VMOpaqueContext,
1814
23.8k
                    caller_vmctx: *mut VMContext,
1815
23.8k
                    $( $args: $args::Abi, )*
1816
23.8k
                    retptr: R::Retptr,
1817
23.8k
                ) -> R::Abi
1818
23.8k
                where
1819
23.8k
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
23.8k
                    $( $args: WasmTy, )*
1821
23.8k
                    R: WasmRet,
1822
23.8k
                {
1823
23.8k
                    enum CallResult<U> {
1824
23.8k
                        Ok(U),
1825
23.8k
                        Trap(anyhow::Error),
1826
23.8k
                        Panic(Box<dyn std::any::Any + Send>),
1827
23.8k
                    }
1828
23.8k
1829
23.8k
                    // Note that this `result` is intentionally scoped into a
1830
23.8k
                    // separate block. Handling traps and panics will involve
1831
23.8k
                    // longjmp-ing from this function which means we won't run
1832
23.8k
                    // destructors. As a result anything requiring a destructor
1833
23.8k
                    // should be part of this block, and the long-jmp-ing
1834
23.8k
                    // happens after the block in handling `CallResult`.
1835
23.8k
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
23.8k
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
23.8k
                        let state = (*vmctx).host_state();
1838
23.8k
1839
23.8k
                        // Double-check ourselves in debug mode, but we control
1840
23.8k
                        // the `Any` here so an unsafe downcast should also
1841
23.8k
                        // work.
1842
23.8k
                        debug_assert!(state.is::<F>());
1843
23.8k
                        let func = &*(state as *const _ as *const F);
1844
23.8k
1845
23.8k
                        let ret = {
1846
23.8k
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
23.8k
                                    return R::fallible_from_trap(trap);
1849
23.8k
                                }
1850
23.8k
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
23.8k
                                let r = func(
1852
23.8k
                                    caller.sub_caller(),
1853
23.8k
                                    $( $args, )*
1854
23.8k
                                );
1855
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
23.8k
                                    return R::fallible_from_trap(trap);
1857
23.8k
                                }
1858
23.8k
                                r.into_fallible()
1859
23.8k
                            }))
1860
23.8k
                        };
1861
23.8k
1862
23.8k
                        // Note that we need to be careful when dealing with traps
1863
23.8k
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
23.8k
                        // that it's not unwinding and consequently no Rust
1865
23.8k
                        // destructors are run. We need to be careful to ensure that
1866
23.8k
                        // nothing on the stack needs a destructor when we exit
1867
23.8k
                        // abnormally from this `match`, e.g. on `Err`, on
1868
23.8k
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
23.8k
                        match ret {
1870
23.8k
                            Err(panic) => CallResult::Panic(panic),
1871
23.8k
                            Ok(ret) => {
1872
23.8k
                                // Because the wrapped function is not `unsafe`, we
1873
23.8k
                                // can't assume it returned a value that is
1874
23.8k
                                // compatible with this store.
1875
23.8k
                                if !ret.compatible_with_store(caller.store.0) {
1876
23.8k
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
23.8k
                                } else {
1878
23.8k
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
23.8k
                                        Ok(val) => CallResult::Ok(val),
1880
23.8k
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
23.8k
                                    }
1882
23.8k
                                }
1883
23.8k
1884
23.8k
                            }
1885
23.8k
                        }
1886
23.8k
                    });
1887
23.8k
1888
23.8k
                    match result {
1889
23.8k
                        CallResult::Ok(val) => val,
1890
23.8k
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
23.8k
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
23.8k
                    }
1893
23.8k
                }
1894
23.8k
1895
23.8k
                /// This trampoline allows host code to indirectly call the
1896
23.8k
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
23.8k
                /// happens to reference our wrapped function).
1898
23.8k
                ///
1899
23.8k
                /// It reads the arguments out of the incoming `args` array,
1900
23.8k
                /// calls the given function pointer, and then stores the result
1901
23.8k
                /// back into the `args` array.
1902
23.8k
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
23.8k
                    callee_vmctx: *mut VMOpaqueContext,
1904
23.8k
                    caller_vmctx: *mut VMContext,
1905
23.8k
                    ptr: *const VMFunctionBody,
1906
23.8k
                    args: *mut ValRaw,
1907
23.8k
                )
1908
23.8k
                where
1909
23.8k
                    $($args: WasmTy,)*
1910
23.8k
                    R: WasmRet,
1911
23.8k
                {
1912
23.8k
                    let ptr = mem::transmute::<
1913
23.8k
                        *const VMFunctionBody,
1914
23.8k
                        unsafe extern "C" fn(
1915
23.8k
                            *mut VMOpaqueContext,
1916
23.8k
                            *mut VMContext,
1917
23.8k
                            $( $args::Abi, )*
1918
23.8k
                            R::Retptr,
1919
23.8k
                        ) -> R::Abi,
1920
23.8k
                    >(ptr);
1921
23.8k
1922
23.8k
                    let mut _n = 0;
1923
23.8k
                    $(
1924
23.8k
                        let $args = $args::abi_from_raw(args.add(_n));
1925
23.8k
                        _n += 1;
1926
23.8k
                    )*
1927
23.8k
                    R::wrap_trampoline(args, |retptr| {
1928
23.8k
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
23.8k
                    });
1930
23.8k
                }
1931
23.8k
1932
23.8k
                let ty = R::func_type(
1933
23.8k
                    None::<ValType>.into_iter()
1934
23.8k
                        $(.chain(Some($args::valtype())))*
1935
23.8k
                );
1936
23.8k
1937
23.8k
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
23.8k
1939
23.8k
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
23.8k
1941
23.8k
                let ctx = unsafe {
1942
23.8k
                    VMHostFuncContext::new(
1943
23.8k
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
23.8k
                        shared_signature_id,
1945
23.8k
                        Box::new(self),
1946
23.8k
                    )
1947
23.8k
                };
1948
23.8k
1949
23.8k
                (ctx, shared_signature_id, trampoline)
1950
23.8k
            }
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u64, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::resolve_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::event::emit_event<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<fvm_shared::sys::out::ipld::IpldStat, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_stat<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
23.8k
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
23.8k
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
23.8k
                /// calls the wrapped host function, and returns the translated
1807
23.8k
                /// result back to Wasm.
1808
23.8k
                ///
1809
23.8k
                /// Note that this shim's ABI must *exactly* match that expected
1810
23.8k
                /// by Cranelift, since Cranelift is generating raw function
1811
23.8k
                /// calls directly to this function.
1812
23.8k
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
23.8k
                    vmctx: *mut VMOpaqueContext,
1814
23.8k
                    caller_vmctx: *mut VMContext,
1815
23.8k
                    $( $args: $args::Abi, )*
1816
23.8k
                    retptr: R::Retptr,
1817
23.8k
                ) -> R::Abi
1818
23.8k
                where
1819
23.8k
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
23.8k
                    $( $args: WasmTy, )*
1821
23.8k
                    R: WasmRet,
1822
23.8k
                {
1823
23.8k
                    enum CallResult<U> {
1824
23.8k
                        Ok(U),
1825
23.8k
                        Trap(anyhow::Error),
1826
23.8k
                        Panic(Box<dyn std::any::Any + Send>),
1827
23.8k
                    }
1828
23.8k
1829
23.8k
                    // Note that this `result` is intentionally scoped into a
1830
23.8k
                    // separate block. Handling traps and panics will involve
1831
23.8k
                    // longjmp-ing from this function which means we won't run
1832
23.8k
                    // destructors. As a result anything requiring a destructor
1833
23.8k
                    // should be part of this block, and the long-jmp-ing
1834
23.8k
                    // happens after the block in handling `CallResult`.
1835
23.8k
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
23.8k
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
23.8k
                        let state = (*vmctx).host_state();
1838
23.8k
1839
23.8k
                        // Double-check ourselves in debug mode, but we control
1840
23.8k
                        // the `Any` here so an unsafe downcast should also
1841
23.8k
                        // work.
1842
23.8k
                        debug_assert!(state.is::<F>());
1843
23.8k
                        let func = &*(state as *const _ as *const F);
1844
23.8k
1845
23.8k
                        let ret = {
1846
23.8k
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
23.8k
                                    return R::fallible_from_trap(trap);
1849
23.8k
                                }
1850
23.8k
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
23.8k
                                let r = func(
1852
23.8k
                                    caller.sub_caller(),
1853
23.8k
                                    $( $args, )*
1854
23.8k
                                );
1855
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
23.8k
                                    return R::fallible_from_trap(trap);
1857
23.8k
                                }
1858
23.8k
                                r.into_fallible()
1859
23.8k
                            }))
1860
23.8k
                        };
1861
23.8k
1862
23.8k
                        // Note that we need to be careful when dealing with traps
1863
23.8k
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
23.8k
                        // that it's not unwinding and consequently no Rust
1865
23.8k
                        // destructors are run. We need to be careful to ensure that
1866
23.8k
                        // nothing on the stack needs a destructor when we exit
1867
23.8k
                        // abnormally from this `match`, e.g. on `Err`, on
1868
23.8k
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
23.8k
                        match ret {
1870
23.8k
                            Err(panic) => CallResult::Panic(panic),
1871
23.8k
                            Ok(ret) => {
1872
23.8k
                                // Because the wrapped function is not `unsafe`, we
1873
23.8k
                                // can't assume it returned a value that is
1874
23.8k
                                // compatible with this store.
1875
23.8k
                                if !ret.compatible_with_store(caller.store.0) {
1876
23.8k
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
23.8k
                                } else {
1878
23.8k
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
23.8k
                                        Ok(val) => CallResult::Ok(val),
1880
23.8k
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
23.8k
                                    }
1882
23.8k
                                }
1883
23.8k
1884
23.8k
                            }
1885
23.8k
                        }
1886
23.8k
                    });
1887
23.8k
1888
23.8k
                    match result {
1889
23.8k
                        CallResult::Ok(val) => val,
1890
23.8k
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
23.8k
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
23.8k
                    }
1893
23.8k
                }
1894
23.8k
1895
23.8k
                /// This trampoline allows host code to indirectly call the
1896
23.8k
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
23.8k
                /// happens to reference our wrapped function).
1898
23.8k
                ///
1899
23.8k
                /// It reads the arguments out of the incoming `args` array,
1900
23.8k
                /// calls the given function pointer, and then stores the result
1901
23.8k
                /// back into the `args` array.
1902
23.8k
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
23.8k
                    callee_vmctx: *mut VMOpaqueContext,
1904
23.8k
                    caller_vmctx: *mut VMContext,
1905
23.8k
                    ptr: *const VMFunctionBody,
1906
23.8k
                    args: *mut ValRaw,
1907
23.8k
                )
1908
23.8k
                where
1909
23.8k
                    $($args: WasmTy,)*
1910
23.8k
                    R: WasmRet,
1911
23.8k
                {
1912
23.8k
                    let ptr = mem::transmute::<
1913
23.8k
                        *const VMFunctionBody,
1914
23.8k
                        unsafe extern "C" fn(
1915
23.8k
                            *mut VMOpaqueContext,
1916
23.8k
                            *mut VMContext,
1917
23.8k
                            $( $args::Abi, )*
1918
23.8k
                            R::Retptr,
1919
23.8k
                        ) -> R::Abi,
1920
23.8k
                    >(ptr);
1921
23.8k
1922
23.8k
                    let mut _n = 0;
1923
23.8k
                    $(
1924
23.8k
                        let $args = $args::abi_from_raw(args.add(_n));
1925
23.8k
                        _n += 1;
1926
23.8k
                    )*
1927
23.8k
                    R::wrap_trampoline(args, |retptr| {
1928
23.8k
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
23.8k
                    });
1930
23.8k
                }
1931
23.8k
1932
23.8k
                let ty = R::func_type(
1933
23.8k
                    None::<ValType>.into_iter()
1934
23.8k
                        $(.chain(Some($args::valtype())))*
1935
23.8k
                );
1936
23.8k
1937
23.8k
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
23.8k
1939
23.8k
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
23.8k
1941
23.8k
                let ctx = unsafe {
1942
23.8k
                    VMHostFuncContext::new(
1943
23.8k
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
23.8k
                        shared_signature_id,
1945
23.8k
                        Box::new(self),
1946
23.8k
                    )
1947
23.8k
                };
1948
23.8k
1949
23.8k
                (ctx, shared_signature_id, trampoline)
1950
23.8k
            }
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, u32, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::compute_unsealed_sector_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, i64, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
23.8k
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
23.8k
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
23.8k
                /// calls the wrapped host function, and returns the translated
1807
23.8k
                /// result back to Wasm.
1808
23.8k
                ///
1809
23.8k
                /// Note that this shim's ABI must *exactly* match that expected
1810
23.8k
                /// by Cranelift, since Cranelift is generating raw function
1811
23.8k
                /// calls directly to this function.
1812
23.8k
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
23.8k
                    vmctx: *mut VMOpaqueContext,
1814
23.8k
                    caller_vmctx: *mut VMContext,
1815
23.8k
                    $( $args: $args::Abi, )*
1816
23.8k
                    retptr: R::Retptr,
1817
23.8k
                ) -> R::Abi
1818
23.8k
                where
1819
23.8k
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
23.8k
                    $( $args: WasmTy, )*
1821
23.8k
                    R: WasmRet,
1822
23.8k
                {
1823
23.8k
                    enum CallResult<U> {
1824
23.8k
                        Ok(U),
1825
23.8k
                        Trap(anyhow::Error),
1826
23.8k
                        Panic(Box<dyn std::any::Any + Send>),
1827
23.8k
                    }
1828
23.8k
1829
23.8k
                    // Note that this `result` is intentionally scoped into a
1830
23.8k
                    // separate block. Handling traps and panics will involve
1831
23.8k
                    // longjmp-ing from this function which means we won't run
1832
23.8k
                    // destructors. As a result anything requiring a destructor
1833
23.8k
                    // should be part of this block, and the long-jmp-ing
1834
23.8k
                    // happens after the block in handling `CallResult`.
1835
23.8k
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
23.8k
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
23.8k
                        let state = (*vmctx).host_state();
1838
23.8k
1839
23.8k
                        // Double-check ourselves in debug mode, but we control
1840
23.8k
                        // the `Any` here so an unsafe downcast should also
1841
23.8k
                        // work.
1842
23.8k
                        debug_assert!(state.is::<F>());
1843
23.8k
                        let func = &*(state as *const _ as *const F);
1844
23.8k
1845
23.8k
                        let ret = {
1846
23.8k
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
23.8k
                                    return R::fallible_from_trap(trap);
1849
23.8k
                                }
1850
23.8k
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
23.8k
                                let r = func(
1852
23.8k
                                    caller.sub_caller(),
1853
23.8k
                                    $( $args, )*
1854
23.8k
                                );
1855
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
23.8k
                                    return R::fallible_from_trap(trap);
1857
23.8k
                                }
1858
23.8k
                                r.into_fallible()
1859
23.8k
                            }))
1860
23.8k
                        };
1861
23.8k
1862
23.8k
                        // Note that we need to be careful when dealing with traps
1863
23.8k
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
23.8k
                        // that it's not unwinding and consequently no Rust
1865
23.8k
                        // destructors are run. We need to be careful to ensure that
1866
23.8k
                        // nothing on the stack needs a destructor when we exit
1867
23.8k
                        // abnormally from this `match`, e.g. on `Err`, on
1868
23.8k
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
23.8k
                        match ret {
1870
23.8k
                            Err(panic) => CallResult::Panic(panic),
1871
23.8k
                            Ok(ret) => {
1872
23.8k
                                // Because the wrapped function is not `unsafe`, we
1873
23.8k
                                // can't assume it returned a value that is
1874
23.8k
                                // compatible with this store.
1875
23.8k
                                if !ret.compatible_with_store(caller.store.0) {
1876
23.8k
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
23.8k
                                } else {
1878
23.8k
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
23.8k
                                        Ok(val) => CallResult::Ok(val),
1880
23.8k
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
23.8k
                                    }
1882
23.8k
                                }
1883
23.8k
1884
23.8k
                            }
1885
23.8k
                        }
1886
23.8k
                    });
1887
23.8k
1888
23.8k
                    match result {
1889
23.8k
                        CallResult::Ok(val) => val,
1890
23.8k
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
23.8k
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
23.8k
                    }
1893
23.8k
                }
1894
23.8k
1895
23.8k
                /// This trampoline allows host code to indirectly call the
1896
23.8k
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
23.8k
                /// happens to reference our wrapped function).
1898
23.8k
                ///
1899
23.8k
                /// It reads the arguments out of the incoming `args` array,
1900
23.8k
                /// calls the given function pointer, and then stores the result
1901
23.8k
                /// back into the `args` array.
1902
23.8k
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
23.8k
                    callee_vmctx: *mut VMOpaqueContext,
1904
23.8k
                    caller_vmctx: *mut VMContext,
1905
23.8k
                    ptr: *const VMFunctionBody,
1906
23.8k
                    args: *mut ValRaw,
1907
23.8k
                )
1908
23.8k
                where
1909
23.8k
                    $($args: WasmTy,)*
1910
23.8k
                    R: WasmRet,
1911
23.8k
                {
1912
23.8k
                    let ptr = mem::transmute::<
1913
23.8k
                        *const VMFunctionBody,
1914
23.8k
                        unsafe extern "C" fn(
1915
23.8k
                            *mut VMOpaqueContext,
1916
23.8k
                            *mut VMContext,
1917
23.8k
                            $( $args::Abi, )*
1918
23.8k
                            R::Retptr,
1919
23.8k
                        ) -> R::Abi,
1920
23.8k
                    >(ptr);
1921
23.8k
1922
23.8k
                    let mut _n = 0;
1923
23.8k
                    $(
1924
23.8k
                        let $args = $args::abi_from_raw(args.add(_n));
1925
23.8k
                        _n += 1;
1926
23.8k
                    )*
1927
23.8k
                    R::wrap_trampoline(args, |retptr| {
1928
23.8k
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
23.8k
                    });
1930
23.8k
                }
1931
23.8k
1932
23.8k
                let ty = R::func_type(
1933
23.8k
                    None::<ValType>.into_iter()
1934
23.8k
                        $(.chain(Some($args::valtype())))*
1935
23.8k
                );
1936
23.8k
1937
23.8k
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
23.8k
1939
23.8k
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
23.8k
1941
23.8k
                let ctx = unsafe {
1942
23.8k
                    VMHostFuncContext::new(
1943
23.8k
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
23.8k
                        shared_signature_id,
1945
23.8k
                        Box::new(self),
1946
23.8k
                    )
1947
23.8k
                };
1948
23.8k
1949
23.8k
                (ctx, shared_signature_id, trampoline)
1950
23.8k
            }
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_seal<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
23.8k
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
23.8k
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
23.8k
                /// calls the wrapped host function, and returns the translated
1807
23.8k
                /// result back to Wasm.
1808
23.8k
                ///
1809
23.8k
                /// Note that this shim's ABI must *exactly* match that expected
1810
23.8k
                /// by Cranelift, since Cranelift is generating raw function
1811
23.8k
                /// calls directly to this function.
1812
23.8k
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
23.8k
                    vmctx: *mut VMOpaqueContext,
1814
23.8k
                    caller_vmctx: *mut VMContext,
1815
23.8k
                    $( $args: $args::Abi, )*
1816
23.8k
                    retptr: R::Retptr,
1817
23.8k
                ) -> R::Abi
1818
23.8k
                where
1819
23.8k
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
23.8k
                    $( $args: WasmTy, )*
1821
23.8k
                    R: WasmRet,
1822
23.8k
                {
1823
23.8k
                    enum CallResult<U> {
1824
23.8k
                        Ok(U),
1825
23.8k
                        Trap(anyhow::Error),
1826
23.8k
                        Panic(Box<dyn std::any::Any + Send>),
1827
23.8k
                    }
1828
23.8k
1829
23.8k
                    // Note that this `result` is intentionally scoped into a
1830
23.8k
                    // separate block. Handling traps and panics will involve
1831
23.8k
                    // longjmp-ing from this function which means we won't run
1832
23.8k
                    // destructors. As a result anything requiring a destructor
1833
23.8k
                    // should be part of this block, and the long-jmp-ing
1834
23.8k
                    // happens after the block in handling `CallResult`.
1835
23.8k
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
23.8k
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
23.8k
                        let state = (*vmctx).host_state();
1838
23.8k
1839
23.8k
                        // Double-check ourselves in debug mode, but we control
1840
23.8k
                        // the `Any` here so an unsafe downcast should also
1841
23.8k
                        // work.
1842
23.8k
                        debug_assert!(state.is::<F>());
1843
23.8k
                        let func = &*(state as *const _ as *const F);
1844
23.8k
1845
23.8k
                        let ret = {
1846
23.8k
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
23.8k
                                    return R::fallible_from_trap(trap);
1849
23.8k
                                }
1850
23.8k
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
23.8k
                                let r = func(
1852
23.8k
                                    caller.sub_caller(),
1853
23.8k
                                    $( $args, )*
1854
23.8k
                                );
1855
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
23.8k
                                    return R::fallible_from_trap(trap);
1857
23.8k
                                }
1858
23.8k
                                r.into_fallible()
1859
23.8k
                            }))
1860
23.8k
                        };
1861
23.8k
1862
23.8k
                        // Note that we need to be careful when dealing with traps
1863
23.8k
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
23.8k
                        // that it's not unwinding and consequently no Rust
1865
23.8k
                        // destructors are run. We need to be careful to ensure that
1866
23.8k
                        // nothing on the stack needs a destructor when we exit
1867
23.8k
                        // abnormally from this `match`, e.g. on `Err`, on
1868
23.8k
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
23.8k
                        match ret {
1870
23.8k
                            Err(panic) => CallResult::Panic(panic),
1871
23.8k
                            Ok(ret) => {
1872
23.8k
                                // Because the wrapped function is not `unsafe`, we
1873
23.8k
                                // can't assume it returned a value that is
1874
23.8k
                                // compatible with this store.
1875
23.8k
                                if !ret.compatible_with_store(caller.store.0) {
1876
23.8k
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
23.8k
                                } else {
1878
23.8k
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
23.8k
                                        Ok(val) => CallResult::Ok(val),
1880
23.8k
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
23.8k
                                    }
1882
23.8k
                                }
1883
23.8k
1884
23.8k
                            }
1885
23.8k
                        }
1886
23.8k
                    });
1887
23.8k
1888
23.8k
                    match result {
1889
23.8k
                        CallResult::Ok(val) => val,
1890
23.8k
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
23.8k
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
23.8k
                    }
1893
23.8k
                }
1894
23.8k
1895
23.8k
                /// This trampoline allows host code to indirectly call the
1896
23.8k
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
23.8k
                /// happens to reference our wrapped function).
1898
23.8k
                ///
1899
23.8k
                /// It reads the arguments out of the incoming `args` array,
1900
23.8k
                /// calls the given function pointer, and then stores the result
1901
23.8k
                /// back into the `args` array.
1902
23.8k
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
23.8k
                    callee_vmctx: *mut VMOpaqueContext,
1904
23.8k
                    caller_vmctx: *mut VMContext,
1905
23.8k
                    ptr: *const VMFunctionBody,
1906
23.8k
                    args: *mut ValRaw,
1907
23.8k
                )
1908
23.8k
                where
1909
23.8k
                    $($args: WasmTy,)*
1910
23.8k
                    R: WasmRet,
1911
23.8k
                {
1912
23.8k
                    let ptr = mem::transmute::<
1913
23.8k
                        *const VMFunctionBody,
1914
23.8k
                        unsafe extern "C" fn(
1915
23.8k
                            *mut VMOpaqueContext,
1916
23.8k
                            *mut VMContext,
1917
23.8k
                            $( $args::Abi, )*
1918
23.8k
                            R::Retptr,
1919
23.8k
                        ) -> R::Abi,
1920
23.8k
                    >(ptr);
1921
23.8k
1922
23.8k
                    let mut _n = 0;
1923
23.8k
                    $(
1924
23.8k
                        let $args = $args::abi_from_raw(args.add(_n));
1925
23.8k
                        _n += 1;
1926
23.8k
                    )*
1927
23.8k
                    R::wrap_trampoline(args, |retptr| {
1928
23.8k
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
23.8k
                    });
1930
23.8k
                }
1931
23.8k
1932
23.8k
                let ty = R::func_type(
1933
23.8k
                    None::<ValType>.into_iter()
1934
23.8k
                        $(.chain(Some($args::valtype())))*
1935
23.8k
                );
1936
23.8k
1937
23.8k
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
23.8k
1939
23.8k
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
23.8k
1941
23.8k
                let ctx = unsafe {
1942
23.8k
                    VMHostFuncContext::new(
1943
23.8k
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
23.8k
                        shared_signature_id,
1945
23.8k
                        Box::new(self),
1946
23.8k
                    )
1947
23.8k
                };
1948
23.8k
1949
23.8k
                (ctx, shared_signature_id, trampoline)
1950
23.8k
            }
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_code_cid_for_type<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, i32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
23.8k
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
23.8k
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
23.8k
                /// calls the wrapped host function, and returns the translated
1807
23.8k
                /// result back to Wasm.
1808
23.8k
                ///
1809
23.8k
                /// Note that this shim's ABI must *exactly* match that expected
1810
23.8k
                /// by Cranelift, since Cranelift is generating raw function
1811
23.8k
                /// calls directly to this function.
1812
23.8k
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
23.8k
                    vmctx: *mut VMOpaqueContext,
1814
23.8k
                    caller_vmctx: *mut VMContext,
1815
23.8k
                    $( $args: $args::Abi, )*
1816
23.8k
                    retptr: R::Retptr,
1817
23.8k
                ) -> R::Abi
1818
23.8k
                where
1819
23.8k
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
23.8k
                    $( $args: WasmTy, )*
1821
23.8k
                    R: WasmRet,
1822
23.8k
                {
1823
23.8k
                    enum CallResult<U> {
1824
23.8k
                        Ok(U),
1825
23.8k
                        Trap(anyhow::Error),
1826
23.8k
                        Panic(Box<dyn std::any::Any + Send>),
1827
23.8k
                    }
1828
23.8k
1829
23.8k
                    // Note that this `result` is intentionally scoped into a
1830
23.8k
                    // separate block. Handling traps and panics will involve
1831
23.8k
                    // longjmp-ing from this function which means we won't run
1832
23.8k
                    // destructors. As a result anything requiring a destructor
1833
23.8k
                    // should be part of this block, and the long-jmp-ing
1834
23.8k
                    // happens after the block in handling `CallResult`.
1835
23.8k
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
23.8k
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
23.8k
                        let state = (*vmctx).host_state();
1838
23.8k
1839
23.8k
                        // Double-check ourselves in debug mode, but we control
1840
23.8k
                        // the `Any` here so an unsafe downcast should also
1841
23.8k
                        // work.
1842
23.8k
                        debug_assert!(state.is::<F>());
1843
23.8k
                        let func = &*(state as *const _ as *const F);
1844
23.8k
1845
23.8k
                        let ret = {
1846
23.8k
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
23.8k
                                    return R::fallible_from_trap(trap);
1849
23.8k
                                }
1850
23.8k
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
23.8k
                                let r = func(
1852
23.8k
                                    caller.sub_caller(),
1853
23.8k
                                    $( $args, )*
1854
23.8k
                                );
1855
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
23.8k
                                    return R::fallible_from_trap(trap);
1857
23.8k
                                }
1858
23.8k
                                r.into_fallible()
1859
23.8k
                            }))
1860
23.8k
                        };
1861
23.8k
1862
23.8k
                        // Note that we need to be careful when dealing with traps
1863
23.8k
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
23.8k
                        // that it's not unwinding and consequently no Rust
1865
23.8k
                        // destructors are run. We need to be careful to ensure that
1866
23.8k
                        // nothing on the stack needs a destructor when we exit
1867
23.8k
                        // abnormally from this `match`, e.g. on `Err`, on
1868
23.8k
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
23.8k
                        match ret {
1870
23.8k
                            Err(panic) => CallResult::Panic(panic),
1871
23.8k
                            Ok(ret) => {
1872
23.8k
                                // Because the wrapped function is not `unsafe`, we
1873
23.8k
                                // can't assume it returned a value that is
1874
23.8k
                                // compatible with this store.
1875
23.8k
                                if !ret.compatible_with_store(caller.store.0) {
1876
23.8k
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
23.8k
                                } else {
1878
23.8k
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
23.8k
                                        Ok(val) => CallResult::Ok(val),
1880
23.8k
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
23.8k
                                    }
1882
23.8k
                                }
1883
23.8k
1884
23.8k
                            }
1885
23.8k
                        }
1886
23.8k
                    });
1887
23.8k
1888
23.8k
                    match result {
1889
23.8k
                        CallResult::Ok(val) => val,
1890
23.8k
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
23.8k
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
23.8k
                    }
1893
23.8k
                }
1894
23.8k
1895
23.8k
                /// This trampoline allows host code to indirectly call the
1896
23.8k
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
23.8k
                /// happens to reference our wrapped function).
1898
23.8k
                ///
1899
23.8k
                /// It reads the arguments out of the incoming `args` array,
1900
23.8k
                /// calls the given function pointer, and then stores the result
1901
23.8k
                /// back into the `args` array.
1902
23.8k
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
23.8k
                    callee_vmctx: *mut VMOpaqueContext,
1904
23.8k
                    caller_vmctx: *mut VMContext,
1905
23.8k
                    ptr: *const VMFunctionBody,
1906
23.8k
                    args: *mut ValRaw,
1907
23.8k
                )
1908
23.8k
                where
1909
23.8k
                    $($args: WasmTy,)*
1910
23.8k
                    R: WasmRet,
1911
23.8k
                {
1912
23.8k
                    let ptr = mem::transmute::<
1913
23.8k
                        *const VMFunctionBody,
1914
23.8k
                        unsafe extern "C" fn(
1915
23.8k
                            *mut VMOpaqueContext,
1916
23.8k
                            *mut VMContext,
1917
23.8k
                            $( $args::Abi, )*
1918
23.8k
                            R::Retptr,
1919
23.8k
                        ) -> R::Abi,
1920
23.8k
                    >(ptr);
1921
23.8k
1922
23.8k
                    let mut _n = 0;
1923
23.8k
                    $(
1924
23.8k
                        let $args = $args::abi_from_raw(args.add(_n));
1925
23.8k
                        _n += 1;
1926
23.8k
                    )*
1927
23.8k
                    R::wrap_trampoline(args, |retptr| {
1928
23.8k
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
23.8k
                    });
1930
23.8k
                }
1931
23.8k
1932
23.8k
                let ty = R::func_type(
1933
23.8k
                    None::<ValType>.into_iter()
1934
23.8k
                        $(.chain(Some($args::valtype())))*
1935
23.8k
                );
1936
23.8k
1937
23.8k
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
23.8k
1939
23.8k
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
23.8k
1941
23.8k
                let ctx = unsafe {
1942
23.8k
                    VMHostFuncContext::new(
1943
23.8k
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
23.8k
                        shared_signature_id,
1945
23.8k
                        Box::new(self),
1946
23.8k
                    )
1947
23.8k
                };
1948
23.8k
1949
23.8k
                (ctx, shared_signature_id, trampoline)
1950
23.8k
            }
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::create_actor<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u64, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_read<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_builtin_actor_type<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32, u32, u32), core::result::Result<fvm_shared::sys::out::crypto::VerifyConsensusFault, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_consensus_fault<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::store_artifact<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
23.8k
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
23.8k
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
23.8k
                /// calls the wrapped host function, and returns the translated
1807
23.8k
                /// result back to Wasm.
1808
23.8k
                ///
1809
23.8k
                /// Note that this shim's ABI must *exactly* match that expected
1810
23.8k
                /// by Cranelift, since Cranelift is generating raw function
1811
23.8k
                /// calls directly to this function.
1812
23.8k
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
23.8k
                    vmctx: *mut VMOpaqueContext,
1814
23.8k
                    caller_vmctx: *mut VMContext,
1815
23.8k
                    $( $args: $args::Abi, )*
1816
23.8k
                    retptr: R::Retptr,
1817
23.8k
                ) -> R::Abi
1818
23.8k
                where
1819
23.8k
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
23.8k
                    $( $args: WasmTy, )*
1821
23.8k
                    R: WasmRet,
1822
23.8k
                {
1823
23.8k
                    enum CallResult<U> {
1824
23.8k
                        Ok(U),
1825
23.8k
                        Trap(anyhow::Error),
1826
23.8k
                        Panic(Box<dyn std::any::Any + Send>),
1827
23.8k
                    }
1828
23.8k
1829
23.8k
                    // Note that this `result` is intentionally scoped into a
1830
23.8k
                    // separate block. Handling traps and panics will involve
1831
23.8k
                    // longjmp-ing from this function which means we won't run
1832
23.8k
                    // destructors. As a result anything requiring a destructor
1833
23.8k
                    // should be part of this block, and the long-jmp-ing
1834
23.8k
                    // happens after the block in handling `CallResult`.
1835
23.8k
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
23.8k
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
23.8k
                        let state = (*vmctx).host_state();
1838
23.8k
1839
23.8k
                        // Double-check ourselves in debug mode, but we control
1840
23.8k
                        // the `Any` here so an unsafe downcast should also
1841
23.8k
                        // work.
1842
23.8k
                        debug_assert!(state.is::<F>());
1843
23.8k
                        let func = &*(state as *const _ as *const F);
1844
23.8k
1845
23.8k
                        let ret = {
1846
23.8k
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
23.8k
                                    return R::fallible_from_trap(trap);
1849
23.8k
                                }
1850
23.8k
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
23.8k
                                let r = func(
1852
23.8k
                                    caller.sub_caller(),
1853
23.8k
                                    $( $args, )*
1854
23.8k
                                );
1855
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
23.8k
                                    return R::fallible_from_trap(trap);
1857
23.8k
                                }
1858
23.8k
                                r.into_fallible()
1859
23.8k
                            }))
1860
23.8k
                        };
1861
23.8k
1862
23.8k
                        // Note that we need to be careful when dealing with traps
1863
23.8k
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
23.8k
                        // that it's not unwinding and consequently no Rust
1865
23.8k
                        // destructors are run. We need to be careful to ensure that
1866
23.8k
                        // nothing on the stack needs a destructor when we exit
1867
23.8k
                        // abnormally from this `match`, e.g. on `Err`, on
1868
23.8k
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
23.8k
                        match ret {
1870
23.8k
                            Err(panic) => CallResult::Panic(panic),
1871
23.8k
                            Ok(ret) => {
1872
23.8k
                                // Because the wrapped function is not `unsafe`, we
1873
23.8k
                                // can't assume it returned a value that is
1874
23.8k
                                // compatible with this store.
1875
23.8k
                                if !ret.compatible_with_store(caller.store.0) {
1876
23.8k
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
23.8k
                                } else {
1878
23.8k
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
23.8k
                                        Ok(val) => CallResult::Ok(val),
1880
23.8k
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
23.8k
                                    }
1882
23.8k
                                }
1883
23.8k
1884
23.8k
                            }
1885
23.8k
                        }
1886
23.8k
                    });
1887
23.8k
1888
23.8k
                    match result {
1889
23.8k
                        CallResult::Ok(val) => val,
1890
23.8k
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
23.8k
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
23.8k
                    }
1893
23.8k
                }
1894
23.8k
1895
23.8k
                /// This trampoline allows host code to indirectly call the
1896
23.8k
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
23.8k
                /// happens to reference our wrapped function).
1898
23.8k
                ///
1899
23.8k
                /// It reads the arguments out of the incoming `args` array,
1900
23.8k
                /// calls the given function pointer, and then stores the result
1901
23.8k
                /// back into the `args` array.
1902
23.8k
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
23.8k
                    callee_vmctx: *mut VMOpaqueContext,
1904
23.8k
                    caller_vmctx: *mut VMContext,
1905
23.8k
                    ptr: *const VMFunctionBody,
1906
23.8k
                    args: *mut ValRaw,
1907
23.8k
                )
1908
23.8k
                where
1909
23.8k
                    $($args: WasmTy,)*
1910
23.8k
                    R: WasmRet,
1911
23.8k
                {
1912
23.8k
                    let ptr = mem::transmute::<
1913
23.8k
                        *const VMFunctionBody,
1914
23.8k
                        unsafe extern "C" fn(
1915
23.8k
                            *mut VMOpaqueContext,
1916
23.8k
                            *mut VMContext,
1917
23.8k
                            $( $args::Abi, )*
1918
23.8k
                            R::Retptr,
1919
23.8k
                        ) -> R::Abi,
1920
23.8k
                    >(ptr);
1921
23.8k
1922
23.8k
                    let mut _n = 0;
1923
23.8k
                    $(
1924
23.8k
                        let $args = $args::abi_from_raw(args.add(_n));
1925
23.8k
                        _n += 1;
1926
23.8k
                    )*
1927
23.8k
                    R::wrap_trampoline(args, |retptr| {
1928
23.8k
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
23.8k
                    });
1930
23.8k
                }
1931
23.8k
1932
23.8k
                let ty = R::func_type(
1933
23.8k
                    None::<ValType>.into_iter()
1934
23.8k
                        $(.chain(Some($args::valtype())))*
1935
23.8k
                );
1936
23.8k
1937
23.8k
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
23.8k
1939
23.8k
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
23.8k
1941
23.8k
                let ctx = unsafe {
1942
23.8k
                    VMHostFuncContext::new(
1943
23.8k
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
23.8k
                        shared_signature_id,
1945
23.8k
                        Box::new(self),
1946
23.8k
                    )
1947
23.8k
                };
1948
23.8k
1949
23.8k
                (ctx, shared_signature_id, trampoline)
1950
23.8k
            }
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, i64), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::gas::charge_gas<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, i64), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u64, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::resolve_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
23.8k
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
23.8k
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
23.8k
                /// calls the wrapped host function, and returns the translated
1807
23.8k
                /// result back to Wasm.
1808
23.8k
                ///
1809
23.8k
                /// Note that this shim's ABI must *exactly* match that expected
1810
23.8k
                /// by Cranelift, since Cranelift is generating raw function
1811
23.8k
                /// calls directly to this function.
1812
23.8k
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
23.8k
                    vmctx: *mut VMOpaqueContext,
1814
23.8k
                    caller_vmctx: *mut VMContext,
1815
23.8k
                    $( $args: $args::Abi, )*
1816
23.8k
                    retptr: R::Retptr,
1817
23.8k
                ) -> R::Abi
1818
23.8k
                where
1819
23.8k
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
23.8k
                    $( $args: WasmTy, )*
1821
23.8k
                    R: WasmRet,
1822
23.8k
                {
1823
23.8k
                    enum CallResult<U> {
1824
23.8k
                        Ok(U),
1825
23.8k
                        Trap(anyhow::Error),
1826
23.8k
                        Panic(Box<dyn std::any::Any + Send>),
1827
23.8k
                    }
1828
23.8k
1829
23.8k
                    // Note that this `result` is intentionally scoped into a
1830
23.8k
                    // separate block. Handling traps and panics will involve
1831
23.8k
                    // longjmp-ing from this function which means we won't run
1832
23.8k
                    // destructors. As a result anything requiring a destructor
1833
23.8k
                    // should be part of this block, and the long-jmp-ing
1834
23.8k
                    // happens after the block in handling `CallResult`.
1835
23.8k
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
23.8k
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
23.8k
                        let state = (*vmctx).host_state();
1838
23.8k
1839
23.8k
                        // Double-check ourselves in debug mode, but we control
1840
23.8k
                        // the `Any` here so an unsafe downcast should also
1841
23.8k
                        // work.
1842
23.8k
                        debug_assert!(state.is::<F>());
1843
23.8k
                        let func = &*(state as *const _ as *const F);
1844
23.8k
1845
23.8k
                        let ret = {
1846
23.8k
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
23.8k
                                    return R::fallible_from_trap(trap);
1849
23.8k
                                }
1850
23.8k
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
23.8k
                                let r = func(
1852
23.8k
                                    caller.sub_caller(),
1853
23.8k
                                    $( $args, )*
1854
23.8k
                                );
1855
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
23.8k
                                    return R::fallible_from_trap(trap);
1857
23.8k
                                }
1858
23.8k
                                r.into_fallible()
1859
23.8k
                            }))
1860
23.8k
                        };
1861
23.8k
1862
23.8k
                        // Note that we need to be careful when dealing with traps
1863
23.8k
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
23.8k
                        // that it's not unwinding and consequently no Rust
1865
23.8k
                        // destructors are run. We need to be careful to ensure that
1866
23.8k
                        // nothing on the stack needs a destructor when we exit
1867
23.8k
                        // abnormally from this `match`, e.g. on `Err`, on
1868
23.8k
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
23.8k
                        match ret {
1870
23.8k
                            Err(panic) => CallResult::Panic(panic),
1871
23.8k
                            Ok(ret) => {
1872
23.8k
                                // Because the wrapped function is not `unsafe`, we
1873
23.8k
                                // can't assume it returned a value that is
1874
23.8k
                                // compatible with this store.
1875
23.8k
                                if !ret.compatible_with_store(caller.store.0) {
1876
23.8k
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
23.8k
                                } else {
1878
23.8k
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
23.8k
                                        Ok(val) => CallResult::Ok(val),
1880
23.8k
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
23.8k
                                    }
1882
23.8k
                                }
1883
23.8k
1884
23.8k
                            }
1885
23.8k
                        }
1886
23.8k
                    });
1887
23.8k
1888
23.8k
                    match result {
1889
23.8k
                        CallResult::Ok(val) => val,
1890
23.8k
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
23.8k
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
23.8k
                    }
1893
23.8k
                }
1894
23.8k
1895
23.8k
                /// This trampoline allows host code to indirectly call the
1896
23.8k
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
23.8k
                /// happens to reference our wrapped function).
1898
23.8k
                ///
1899
23.8k
                /// It reads the arguments out of the incoming `args` array,
1900
23.8k
                /// calls the given function pointer, and then stores the result
1901
23.8k
                /// back into the `args` array.
1902
23.8k
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
23.8k
                    callee_vmctx: *mut VMOpaqueContext,
1904
23.8k
                    caller_vmctx: *mut VMContext,
1905
23.8k
                    ptr: *const VMFunctionBody,
1906
23.8k
                    args: *mut ValRaw,
1907
23.8k
                )
1908
23.8k
                where
1909
23.8k
                    $($args: WasmTy,)*
1910
23.8k
                    R: WasmRet,
1911
23.8k
                {
1912
23.8k
                    let ptr = mem::transmute::<
1913
23.8k
                        *const VMFunctionBody,
1914
23.8k
                        unsafe extern "C" fn(
1915
23.8k
                            *mut VMOpaqueContext,
1916
23.8k
                            *mut VMContext,
1917
23.8k
                            $( $args::Abi, )*
1918
23.8k
                            R::Retptr,
1919
23.8k
                        ) -> R::Abi,
1920
23.8k
                    >(ptr);
1921
23.8k
1922
23.8k
                    let mut _n = 0;
1923
23.8k
                    $(
1924
23.8k
                        let $args = $args::abi_from_raw(args.add(_n));
1925
23.8k
                        _n += 1;
1926
23.8k
                    )*
1927
23.8k
                    R::wrap_trampoline(args, |retptr| {
1928
23.8k
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
23.8k
                    });
1930
23.8k
                }
1931
23.8k
1932
23.8k
                let ty = R::func_type(
1933
23.8k
                    None::<ValType>.into_iter()
1934
23.8k
                        $(.chain(Some($args::valtype())))*
1935
23.8k
                );
1936
23.8k
1937
23.8k
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
23.8k
1939
23.8k
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
23.8k
1941
23.8k
                let ctx = unsafe {
1942
23.8k
                    VMHostFuncContext::new(
1943
23.8k
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
23.8k
                        shared_signature_id,
1945
23.8k
                        Box::new(self),
1946
23.8k
                    )
1947
23.8k
                };
1948
23.8k
1949
23.8k
                (ctx, shared_signature_id, trampoline)
1950
23.8k
            }
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::create_actor<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u64, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
23.8k
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
23.8k
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
23.8k
                /// calls the wrapped host function, and returns the translated
1807
23.8k
                /// result back to Wasm.
1808
23.8k
                ///
1809
23.8k
                /// Note that this shim's ABI must *exactly* match that expected
1810
23.8k
                /// by Cranelift, since Cranelift is generating raw function
1811
23.8k
                /// calls directly to this function.
1812
23.8k
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
23.8k
                    vmctx: *mut VMOpaqueContext,
1814
23.8k
                    caller_vmctx: *mut VMContext,
1815
23.8k
                    $( $args: $args::Abi, )*
1816
23.8k
                    retptr: R::Retptr,
1817
23.8k
                ) -> R::Abi
1818
23.8k
                where
1819
23.8k
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
23.8k
                    $( $args: WasmTy, )*
1821
23.8k
                    R: WasmRet,
1822
23.8k
                {
1823
23.8k
                    enum CallResult<U> {
1824
23.8k
                        Ok(U),
1825
23.8k
                        Trap(anyhow::Error),
1826
23.8k
                        Panic(Box<dyn std::any::Any + Send>),
1827
23.8k
                    }
1828
23.8k
1829
23.8k
                    // Note that this `result` is intentionally scoped into a
1830
23.8k
                    // separate block. Handling traps and panics will involve
1831
23.8k
                    // longjmp-ing from this function which means we won't run
1832
23.8k
                    // destructors. As a result anything requiring a destructor
1833
23.8k
                    // should be part of this block, and the long-jmp-ing
1834
23.8k
                    // happens after the block in handling `CallResult`.
1835
23.8k
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
23.8k
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
23.8k
                        let state = (*vmctx).host_state();
1838
23.8k
1839
23.8k
                        // Double-check ourselves in debug mode, but we control
1840
23.8k
                        // the `Any` here so an unsafe downcast should also
1841
23.8k
                        // work.
1842
23.8k
                        debug_assert!(state.is::<F>());
1843
23.8k
                        let func = &*(state as *const _ as *const F);
1844
23.8k
1845
23.8k
                        let ret = {
1846
23.8k
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
23.8k
                                    return R::fallible_from_trap(trap);
1849
23.8k
                                }
1850
23.8k
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
23.8k
                                let r = func(
1852
23.8k
                                    caller.sub_caller(),
1853
23.8k
                                    $( $args, )*
1854
23.8k
                                );
1855
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
23.8k
                                    return R::fallible_from_trap(trap);
1857
23.8k
                                }
1858
23.8k
                                r.into_fallible()
1859
23.8k
                            }))
1860
23.8k
                        };
1861
23.8k
1862
23.8k
                        // Note that we need to be careful when dealing with traps
1863
23.8k
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
23.8k
                        // that it's not unwinding and consequently no Rust
1865
23.8k
                        // destructors are run. We need to be careful to ensure that
1866
23.8k
                        // nothing on the stack needs a destructor when we exit
1867
23.8k
                        // abnormally from this `match`, e.g. on `Err`, on
1868
23.8k
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
23.8k
                        match ret {
1870
23.8k
                            Err(panic) => CallResult::Panic(panic),
1871
23.8k
                            Ok(ret) => {
1872
23.8k
                                // Because the wrapped function is not `unsafe`, we
1873
23.8k
                                // can't assume it returned a value that is
1874
23.8k
                                // compatible with this store.
1875
23.8k
                                if !ret.compatible_with_store(caller.store.0) {
1876
23.8k
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
23.8k
                                } else {
1878
23.8k
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
23.8k
                                        Ok(val) => CallResult::Ok(val),
1880
23.8k
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
23.8k
                                    }
1882
23.8k
                                }
1883
23.8k
1884
23.8k
                            }
1885
23.8k
                        }
1886
23.8k
                    });
1887
23.8k
1888
23.8k
                    match result {
1889
23.8k
                        CallResult::Ok(val) => val,
1890
23.8k
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
23.8k
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
23.8k
                    }
1893
23.8k
                }
1894
23.8k
1895
23.8k
                /// This trampoline allows host code to indirectly call the
1896
23.8k
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
23.8k
                /// happens to reference our wrapped function).
1898
23.8k
                ///
1899
23.8k
                /// It reads the arguments out of the incoming `args` array,
1900
23.8k
                /// calls the given function pointer, and then stores the result
1901
23.8k
                /// back into the `args` array.
1902
23.8k
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
23.8k
                    callee_vmctx: *mut VMOpaqueContext,
1904
23.8k
                    caller_vmctx: *mut VMContext,
1905
23.8k
                    ptr: *const VMFunctionBody,
1906
23.8k
                    args: *mut ValRaw,
1907
23.8k
                )
1908
23.8k
                where
1909
23.8k
                    $($args: WasmTy,)*
1910
23.8k
                    R: WasmRet,
1911
23.8k
                {
1912
23.8k
                    let ptr = mem::transmute::<
1913
23.8k
                        *const VMFunctionBody,
1914
23.8k
                        unsafe extern "C" fn(
1915
23.8k
                            *mut VMOpaqueContext,
1916
23.8k
                            *mut VMContext,
1917
23.8k
                            $( $args::Abi, )*
1918
23.8k
                            R::Retptr,
1919
23.8k
                        ) -> R::Abi,
1920
23.8k
                    >(ptr);
1921
23.8k
1922
23.8k
                    let mut _n = 0;
1923
23.8k
                    $(
1924
23.8k
                        let $args = $args::abi_from_raw(args.add(_n));
1925
23.8k
                        _n += 1;
1926
23.8k
                    )*
1927
23.8k
                    R::wrap_trampoline(args, |retptr| {
1928
23.8k
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
23.8k
                    });
1930
23.8k
                }
1931
23.8k
1932
23.8k
                let ty = R::func_type(
1933
23.8k
                    None::<ValType>.into_iter()
1934
23.8k
                        $(.chain(Some($args::valtype())))*
1935
23.8k
                );
1936
23.8k
1937
23.8k
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
23.8k
1939
23.8k
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
23.8k
1941
23.8k
                let ctx = unsafe {
1942
23.8k
                    VMHostFuncContext::new(
1943
23.8k
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
23.8k
                        shared_signature_id,
1945
23.8k
                        Box::new(self),
1946
23.8k
                    )
1947
23.8k
                };
1948
23.8k
1949
23.8k
                (ctx, shared_signature_id, trampoline)
1950
23.8k
            }
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_create<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u64, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
23.8k
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
23.8k
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
23.8k
                /// calls the wrapped host function, and returns the translated
1807
23.8k
                /// result back to Wasm.
1808
23.8k
                ///
1809
23.8k
                /// Note that this shim's ABI must *exactly* match that expected
1810
23.8k
                /// by Cranelift, since Cranelift is generating raw function
1811
23.8k
                /// calls directly to this function.
1812
23.8k
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
23.8k
                    vmctx: *mut VMOpaqueContext,
1814
23.8k
                    caller_vmctx: *mut VMContext,
1815
23.8k
                    $( $args: $args::Abi, )*
1816
23.8k
                    retptr: R::Retptr,
1817
23.8k
                ) -> R::Abi
1818
23.8k
                where
1819
23.8k
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
23.8k
                    $( $args: WasmTy, )*
1821
23.8k
                    R: WasmRet,
1822
23.8k
                {
1823
23.8k
                    enum CallResult<U> {
1824
23.8k
                        Ok(U),
1825
23.8k
                        Trap(anyhow::Error),
1826
23.8k
                        Panic(Box<dyn std::any::Any + Send>),
1827
23.8k
                    }
1828
23.8k
1829
23.8k
                    // Note that this `result` is intentionally scoped into a
1830
23.8k
                    // separate block. Handling traps and panics will involve
1831
23.8k
                    // longjmp-ing from this function which means we won't run
1832
23.8k
                    // destructors. As a result anything requiring a destructor
1833
23.8k
                    // should be part of this block, and the long-jmp-ing
1834
23.8k
                    // happens after the block in handling `CallResult`.
1835
23.8k
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
23.8k
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
23.8k
                        let state = (*vmctx).host_state();
1838
23.8k
1839
23.8k
                        // Double-check ourselves in debug mode, but we control
1840
23.8k
                        // the `Any` here so an unsafe downcast should also
1841
23.8k
                        // work.
1842
23.8k
                        debug_assert!(state.is::<F>());
1843
23.8k
                        let func = &*(state as *const _ as *const F);
1844
23.8k
1845
23.8k
                        let ret = {
1846
23.8k
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
23.8k
                                    return R::fallible_from_trap(trap);
1849
23.8k
                                }
1850
23.8k
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
23.8k
                                let r = func(
1852
23.8k
                                    caller.sub_caller(),
1853
23.8k
                                    $( $args, )*
1854
23.8k
                                );
1855
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
23.8k
                                    return R::fallible_from_trap(trap);
1857
23.8k
                                }
1858
23.8k
                                r.into_fallible()
1859
23.8k
                            }))
1860
23.8k
                        };
1861
23.8k
1862
23.8k
                        // Note that we need to be careful when dealing with traps
1863
23.8k
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
23.8k
                        // that it's not unwinding and consequently no Rust
1865
23.8k
                        // destructors are run. We need to be careful to ensure that
1866
23.8k
                        // nothing on the stack needs a destructor when we exit
1867
23.8k
                        // abnormally from this `match`, e.g. on `Err`, on
1868
23.8k
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
23.8k
                        match ret {
1870
23.8k
                            Err(panic) => CallResult::Panic(panic),
1871
23.8k
                            Ok(ret) => {
1872
23.8k
                                // Because the wrapped function is not `unsafe`, we
1873
23.8k
                                // can't assume it returned a value that is
1874
23.8k
                                // compatible with this store.
1875
23.8k
                                if !ret.compatible_with_store(caller.store.0) {
1876
23.8k
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
23.8k
                                } else {
1878
23.8k
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
23.8k
                                        Ok(val) => CallResult::Ok(val),
1880
23.8k
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
23.8k
                                    }
1882
23.8k
                                }
1883
23.8k
1884
23.8k
                            }
1885
23.8k
                        }
1886
23.8k
                    });
1887
23.8k
1888
23.8k
                    match result {
1889
23.8k
                        CallResult::Ok(val) => val,
1890
23.8k
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
23.8k
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
23.8k
                    }
1893
23.8k
                }
1894
23.8k
1895
23.8k
                /// This trampoline allows host code to indirectly call the
1896
23.8k
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
23.8k
                /// happens to reference our wrapped function).
1898
23.8k
                ///
1899
23.8k
                /// It reads the arguments out of the incoming `args` array,
1900
23.8k
                /// calls the given function pointer, and then stores the result
1901
23.8k
                /// back into the `args` array.
1902
23.8k
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
23.8k
                    callee_vmctx: *mut VMOpaqueContext,
1904
23.8k
                    caller_vmctx: *mut VMContext,
1905
23.8k
                    ptr: *const VMFunctionBody,
1906
23.8k
                    args: *mut ValRaw,
1907
23.8k
                )
1908
23.8k
                where
1909
23.8k
                    $($args: WasmTy,)*
1910
23.8k
                    R: WasmRet,
1911
23.8k
                {
1912
23.8k
                    let ptr = mem::transmute::<
1913
23.8k
                        *const VMFunctionBody,
1914
23.8k
                        unsafe extern "C" fn(
1915
23.8k
                            *mut VMOpaqueContext,
1916
23.8k
                            *mut VMContext,
1917
23.8k
                            $( $args::Abi, )*
1918
23.8k
                            R::Retptr,
1919
23.8k
                        ) -> R::Abi,
1920
23.8k
                    >(ptr);
1921
23.8k
1922
23.8k
                    let mut _n = 0;
1923
23.8k
                    $(
1924
23.8k
                        let $args = $args::abi_from_raw(args.add(_n));
1925
23.8k
                        _n += 1;
1926
23.8k
                    )*
1927
23.8k
                    R::wrap_trampoline(args, |retptr| {
1928
23.8k
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
23.8k
                    });
1930
23.8k
                }
1931
23.8k
1932
23.8k
                let ty = R::func_type(
1933
23.8k
                    None::<ValType>.into_iter()
1934
23.8k
                        $(.chain(Some($args::valtype())))*
1935
23.8k
                );
1936
23.8k
1937
23.8k
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
23.8k
1939
23.8k
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
23.8k
1941
23.8k
                let ctx = unsafe {
1942
23.8k
                    VMHostFuncContext::new(
1943
23.8k
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
23.8k
                        shared_signature_id,
1945
23.8k
                        Box::new(self),
1946
23.8k
                    )
1947
23.8k
                };
1948
23.8k
1949
23.8k
                (ctx, shared_signature_id, trampoline)
1950
23.8k
            }
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::current_balance<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>,), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64,), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::balance_of<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u64), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::store_artifact<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<u64, fvm::kernel::error::ExecutionError>, fvm::syscalls::gas::available<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
23.8k
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
23.8k
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
23.8k
                /// calls the wrapped host function, and returns the translated
1807
23.8k
                /// result back to Wasm.
1808
23.8k
                ///
1809
23.8k
                /// Note that this shim's ABI must *exactly* match that expected
1810
23.8k
                /// by Cranelift, since Cranelift is generating raw function
1811
23.8k
                /// calls directly to this function.
1812
23.8k
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
23.8k
                    vmctx: *mut VMOpaqueContext,
1814
23.8k
                    caller_vmctx: *mut VMContext,
1815
23.8k
                    $( $args: $args::Abi, )*
1816
23.8k
                    retptr: R::Retptr,
1817
23.8k
                ) -> R::Abi
1818
23.8k
                where
1819
23.8k
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
23.8k
                    $( $args: WasmTy, )*
1821
23.8k
                    R: WasmRet,
1822
23.8k
                {
1823
23.8k
                    enum CallResult<U> {
1824
23.8k
                        Ok(U),
1825
23.8k
                        Trap(anyhow::Error),
1826
23.8k
                        Panic(Box<dyn std::any::Any + Send>),
1827
23.8k
                    }
1828
23.8k
1829
23.8k
                    // Note that this `result` is intentionally scoped into a
1830
23.8k
                    // separate block. Handling traps and panics will involve
1831
23.8k
                    // longjmp-ing from this function which means we won't run
1832
23.8k
                    // destructors. As a result anything requiring a destructor
1833
23.8k
                    // should be part of this block, and the long-jmp-ing
1834
23.8k
                    // happens after the block in handling `CallResult`.
1835
23.8k
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
23.8k
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
23.8k
                        let state = (*vmctx).host_state();
1838
23.8k
1839
23.8k
                        // Double-check ourselves in debug mode, but we control
1840
23.8k
                        // the `Any` here so an unsafe downcast should also
1841
23.8k
                        // work.
1842
23.8k
                        debug_assert!(state.is::<F>());
1843
23.8k
                        let func = &*(state as *const _ as *const F);
1844
23.8k
1845
23.8k
                        let ret = {
1846
23.8k
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
23.8k
                                    return R::fallible_from_trap(trap);
1849
23.8k
                                }
1850
23.8k
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
23.8k
                                let r = func(
1852
23.8k
                                    caller.sub_caller(),
1853
23.8k
                                    $( $args, )*
1854
23.8k
                                );
1855
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
23.8k
                                    return R::fallible_from_trap(trap);
1857
23.8k
                                }
1858
23.8k
                                r.into_fallible()
1859
23.8k
                            }))
1860
23.8k
                        };
1861
23.8k
1862
23.8k
                        // Note that we need to be careful when dealing with traps
1863
23.8k
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
23.8k
                        // that it's not unwinding and consequently no Rust
1865
23.8k
                        // destructors are run. We need to be careful to ensure that
1866
23.8k
                        // nothing on the stack needs a destructor when we exit
1867
23.8k
                        // abnormally from this `match`, e.g. on `Err`, on
1868
23.8k
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
23.8k
                        match ret {
1870
23.8k
                            Err(panic) => CallResult::Panic(panic),
1871
23.8k
                            Ok(ret) => {
1872
23.8k
                                // Because the wrapped function is not `unsafe`, we
1873
23.8k
                                // can't assume it returned a value that is
1874
23.8k
                                // compatible with this store.
1875
23.8k
                                if !ret.compatible_with_store(caller.store.0) {
1876
23.8k
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
23.8k
                                } else {
1878
23.8k
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
23.8k
                                        Ok(val) => CallResult::Ok(val),
1880
23.8k
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
23.8k
                                    }
1882
23.8k
                                }
1883
23.8k
1884
23.8k
                            }
1885
23.8k
                        }
1886
23.8k
                    });
1887
23.8k
1888
23.8k
                    match result {
1889
23.8k
                        CallResult::Ok(val) => val,
1890
23.8k
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
23.8k
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
23.8k
                    }
1893
23.8k
                }
1894
23.8k
1895
23.8k
                /// This trampoline allows host code to indirectly call the
1896
23.8k
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
23.8k
                /// happens to reference our wrapped function).
1898
23.8k
                ///
1899
23.8k
                /// It reads the arguments out of the incoming `args` array,
1900
23.8k
                /// calls the given function pointer, and then stores the result
1901
23.8k
                /// back into the `args` array.
1902
23.8k
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
23.8k
                    callee_vmctx: *mut VMOpaqueContext,
1904
23.8k
                    caller_vmctx: *mut VMContext,
1905
23.8k
                    ptr: *const VMFunctionBody,
1906
23.8k
                    args: *mut ValRaw,
1907
23.8k
                )
1908
23.8k
                where
1909
23.8k
                    $($args: WasmTy,)*
1910
23.8k
                    R: WasmRet,
1911
23.8k
                {
1912
23.8k
                    let ptr = mem::transmute::<
1913
23.8k
                        *const VMFunctionBody,
1914
23.8k
                        unsafe extern "C" fn(
1915
23.8k
                            *mut VMOpaqueContext,
1916
23.8k
                            *mut VMContext,
1917
23.8k
                            $( $args::Abi, )*
1918
23.8k
                            R::Retptr,
1919
23.8k
                        ) -> R::Abi,
1920
23.8k
                    >(ptr);
1921
23.8k
1922
23.8k
                    let mut _n = 0;
1923
23.8k
                    $(
1924
23.8k
                        let $args = $args::abi_from_raw(args.add(_n));
1925
23.8k
                        _n += 1;
1926
23.8k
                    )*
1927
23.8k
                    R::wrap_trampoline(args, |retptr| {
1928
23.8k
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
23.8k
                    });
1930
23.8k
                }
1931
23.8k
1932
23.8k
                let ty = R::func_type(
1933
23.8k
                    None::<ValType>.into_iter()
1934
23.8k
                        $(.chain(Some($args::valtype())))*
1935
23.8k
                );
1936
23.8k
1937
23.8k
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
23.8k
1939
23.8k
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
23.8k
1941
23.8k
                let ctx = unsafe {
1942
23.8k
                    VMHostFuncContext::new(
1943
23.8k
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
23.8k
                        shared_signature_id,
1945
23.8k
                        Box::new(self),
1946
23.8k
                    )
1947
23.8k
                };
1948
23.8k
1949
23.8k
                (ctx, shared_signature_id, trampoline)
1950
23.8k
            }
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::hash<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u64, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
23.8k
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
23.8k
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
23.8k
                /// calls the wrapped host function, and returns the translated
1807
23.8k
                /// result back to Wasm.
1808
23.8k
                ///
1809
23.8k
                /// Note that this shim's ABI must *exactly* match that expected
1810
23.8k
                /// by Cranelift, since Cranelift is generating raw function
1811
23.8k
                /// calls directly to this function.
1812
23.8k
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
23.8k
                    vmctx: *mut VMOpaqueContext,
1814
23.8k
                    caller_vmctx: *mut VMContext,
1815
23.8k
                    $( $args: $args::Abi, )*
1816
23.8k
                    retptr: R::Retptr,
1817
23.8k
                ) -> R::Abi
1818
23.8k
                where
1819
23.8k
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
23.8k
                    $( $args: WasmTy, )*
1821
23.8k
                    R: WasmRet,
1822
23.8k
                {
1823
23.8k
                    enum CallResult<U> {
1824
23.8k
                        Ok(U),
1825
23.8k
                        Trap(anyhow::Error),
1826
23.8k
                        Panic(Box<dyn std::any::Any + Send>),
1827
23.8k
                    }
1828
23.8k
1829
23.8k
                    // Note that this `result` is intentionally scoped into a
1830
23.8k
                    // separate block. Handling traps and panics will involve
1831
23.8k
                    // longjmp-ing from this function which means we won't run
1832
23.8k
                    // destructors. As a result anything requiring a destructor
1833
23.8k
                    // should be part of this block, and the long-jmp-ing
1834
23.8k
                    // happens after the block in handling `CallResult`.
1835
23.8k
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
23.8k
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
23.8k
                        let state = (*vmctx).host_state();
1838
23.8k
1839
23.8k
                        // Double-check ourselves in debug mode, but we control
1840
23.8k
                        // the `Any` here so an unsafe downcast should also
1841
23.8k
                        // work.
1842
23.8k
                        debug_assert!(state.is::<F>());
1843
23.8k
                        let func = &*(state as *const _ as *const F);
1844
23.8k
1845
23.8k
                        let ret = {
1846
23.8k
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
23.8k
                                    return R::fallible_from_trap(trap);
1849
23.8k
                                }
1850
23.8k
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
23.8k
                                let r = func(
1852
23.8k
                                    caller.sub_caller(),
1853
23.8k
                                    $( $args, )*
1854
23.8k
                                );
1855
23.8k
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
23.8k
                                    return R::fallible_from_trap(trap);
1857
23.8k
                                }
1858
23.8k
                                r.into_fallible()
1859
23.8k
                            }))
1860
23.8k
                        };
1861
23.8k
1862
23.8k
                        // Note that we need to be careful when dealing with traps
1863
23.8k
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
23.8k
                        // that it's not unwinding and consequently no Rust
1865
23.8k
                        // destructors are run. We need to be careful to ensure that
1866
23.8k
                        // nothing on the stack needs a destructor when we exit
1867
23.8k
                        // abnormally from this `match`, e.g. on `Err`, on
1868
23.8k
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
23.8k
                        match ret {
1870
23.8k
                            Err(panic) => CallResult::Panic(panic),
1871
23.8k
                            Ok(ret) => {
1872
23.8k
                                // Because the wrapped function is not `unsafe`, we
1873
23.8k
                                // can't assume it returned a value that is
1874
23.8k
                                // compatible with this store.
1875
23.8k
                                if !ret.compatible_with_store(caller.store.0) {
1876
23.8k
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
23.8k
                                } else {
1878
23.8k
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
23.8k
                                        Ok(val) => CallResult::Ok(val),
1880
23.8k
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
23.8k
                                    }
1882
23.8k
                                }
1883
23.8k
1884
23.8k
                            }
1885
23.8k
                        }
1886
23.8k
                    });
1887
23.8k
1888
23.8k
                    match result {
1889
23.8k
                        CallResult::Ok(val) => val,
1890
23.8k
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
23.8k
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
23.8k
                    }
1893
23.8k
                }
1894
23.8k
1895
23.8k
                /// This trampoline allows host code to indirectly call the
1896
23.8k
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
23.8k
                /// happens to reference our wrapped function).
1898
23.8k
                ///
1899
23.8k
                /// It reads the arguments out of the incoming `args` array,
1900
23.8k
                /// calls the given function pointer, and then stores the result
1901
23.8k
                /// back into the `args` array.
1902
23.8k
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
23.8k
                    callee_vmctx: *mut VMOpaqueContext,
1904
23.8k
                    caller_vmctx: *mut VMContext,
1905
23.8k
                    ptr: *const VMFunctionBody,
1906
23.8k
                    args: *mut ValRaw,
1907
23.8k
                )
1908
23.8k
                where
1909
23.8k
                    $($args: WasmTy,)*
1910
23.8k
                    R: WasmRet,
1911
23.8k
                {
1912
23.8k
                    let ptr = mem::transmute::<
1913
23.8k
                        *const VMFunctionBody,
1914
23.8k
                        unsafe extern "C" fn(
1915
23.8k
                            *mut VMOpaqueContext,
1916
23.8k
                            *mut VMContext,
1917
23.8k
                            $( $args::Abi, )*
1918
23.8k
                            R::Retptr,
1919
23.8k
                        ) -> R::Abi,
1920
23.8k
                    >(ptr);
1921
23.8k
1922
23.8k
                    let mut _n = 0;
1923
23.8k
                    $(
1924
23.8k
                        let $args = $args::abi_from_raw(args.add(_n));
1925
23.8k
                        _n += 1;
1926
23.8k
                    )*
1927
23.8k
                    R::wrap_trampoline(args, |retptr| {
1928
23.8k
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
23.8k
                    });
1930
23.8k
                }
1931
23.8k
1932
23.8k
                let ty = R::func_type(
1933
23.8k
                    None::<ValType>.into_iter()
1934
23.8k
                        $(.chain(Some($args::valtype())))*
1935
23.8k
                );
1936
23.8k
1937
23.8k
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
23.8k
1939
23.8k
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
23.8k
1941
23.8k
                let ctx = unsafe {
1942
23.8k
                    VMHostFuncContext::new(
1943
23.8k
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
23.8k
                        shared_signature_id,
1945
23.8k
                        Box::new(self),
1946
23.8k
                    )
1947
23.8k
                };
1948
23.8k
1949
23.8k
                (ctx, shared_signature_id, trampoline)
1950
23.8k
            }
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::tipset_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, i64, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _), _>>::into_func
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _), _>>::into_func
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _, _), _>>::into_func
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _, _, _), _>>::into_func
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _, _, _, _, _), _>>::into_func
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _), _>>::into_func
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _), _>>::into_func
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _), _>>::into_func
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _, _, _, _), _>>::into_func
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _, _, _, _, _, _), _>>::into_func
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::next_actor_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
417
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
417
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
417
                /// calls the wrapped host function, and returns the translated
1807
417
                /// result back to Wasm.
1808
417
                ///
1809
417
                /// Note that this shim's ABI must *exactly* match that expected
1810
417
                /// by Cranelift, since Cranelift is generating raw function
1811
417
                /// calls directly to this function.
1812
417
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
417
                    vmctx: *mut VMOpaqueContext,
1814
417
                    caller_vmctx: *mut VMContext,
1815
417
                    $( $args: $args::Abi, )*
1816
417
                    retptr: R::Retptr,
1817
417
                ) -> R::Abi
1818
417
                where
1819
417
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
417
                    $( $args: WasmTy, )*
1821
417
                    R: WasmRet,
1822
417
                {
1823
417
                    enum CallResult<U> {
1824
417
                        Ok(U),
1825
417
                        Trap(anyhow::Error),
1826
417
                        Panic(Box<dyn std::any::Any + Send>),
1827
417
                    }
1828
417
1829
417
                    // Note that this `result` is intentionally scoped into a
1830
417
                    // separate block. Handling traps and panics will involve
1831
417
                    // longjmp-ing from this function which means we won't run
1832
417
                    // destructors. As a result anything requiring a destructor
1833
417
                    // should be part of this block, and the long-jmp-ing
1834
417
                    // happens after the block in handling `CallResult`.
1835
417
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
417
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
417
                        let state = (*vmctx).host_state();
1838
417
1839
417
                        // Double-check ourselves in debug mode, but we control
1840
417
                        // the `Any` here so an unsafe downcast should also
1841
417
                        // work.
1842
417
                        debug_assert!(state.is::<F>());
1843
417
                        let func = &*(state as *const _ as *const F);
1844
417
1845
417
                        let ret = {
1846
417
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
417
                                    return R::fallible_from_trap(trap);
1849
417
                                }
1850
417
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
417
                                let r = func(
1852
417
                                    caller.sub_caller(),
1853
417
                                    $( $args, )*
1854
417
                                );
1855
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
417
                                    return R::fallible_from_trap(trap);
1857
417
                                }
1858
417
                                r.into_fallible()
1859
417
                            }))
1860
417
                        };
1861
417
1862
417
                        // Note that we need to be careful when dealing with traps
1863
417
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
417
                        // that it's not unwinding and consequently no Rust
1865
417
                        // destructors are run. We need to be careful to ensure that
1866
417
                        // nothing on the stack needs a destructor when we exit
1867
417
                        // abnormally from this `match`, e.g. on `Err`, on
1868
417
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
417
                        match ret {
1870
417
                            Err(panic) => CallResult::Panic(panic),
1871
417
                            Ok(ret) => {
1872
417
                                // Because the wrapped function is not `unsafe`, we
1873
417
                                // can't assume it returned a value that is
1874
417
                                // compatible with this store.
1875
417
                                if !ret.compatible_with_store(caller.store.0) {
1876
417
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
417
                                } else {
1878
417
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
417
                                        Ok(val) => CallResult::Ok(val),
1880
417
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
417
                                    }
1882
417
                                }
1883
417
1884
417
                            }
1885
417
                        }
1886
417
                    });
1887
417
1888
417
                    match result {
1889
417
                        CallResult::Ok(val) => val,
1890
417
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
417
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
417
                    }
1893
417
                }
1894
417
1895
417
                /// This trampoline allows host code to indirectly call the
1896
417
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
417
                /// happens to reference our wrapped function).
1898
417
                ///
1899
417
                /// It reads the arguments out of the incoming `args` array,
1900
417
                /// calls the given function pointer, and then stores the result
1901
417
                /// back into the `args` array.
1902
417
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
417
                    callee_vmctx: *mut VMOpaqueContext,
1904
417
                    caller_vmctx: *mut VMContext,
1905
417
                    ptr: *const VMFunctionBody,
1906
417
                    args: *mut ValRaw,
1907
417
                )
1908
417
                where
1909
417
                    $($args: WasmTy,)*
1910
417
                    R: WasmRet,
1911
417
                {
1912
417
                    let ptr = mem::transmute::<
1913
417
                        *const VMFunctionBody,
1914
417
                        unsafe extern "C" fn(
1915
417
                            *mut VMOpaqueContext,
1916
417
                            *mut VMContext,
1917
417
                            $( $args::Abi, )*
1918
417
                            R::Retptr,
1919
417
                        ) -> R::Abi,
1920
417
                    >(ptr);
1921
417
1922
417
                    let mut _n = 0;
1923
417
                    $(
1924
417
                        let $args = $args::abi_from_raw(args.add(_n));
1925
417
                        _n += 1;
1926
417
                    )*
1927
417
                    R::wrap_trampoline(args, |retptr| {
1928
417
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
417
                    });
1930
417
                }
1931
417
1932
417
                let ty = R::func_type(
1933
417
                    None::<ValType>.into_iter()
1934
417
                        $(.chain(Some($args::valtype())))*
1935
417
                );
1936
417
1937
417
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
417
1939
417
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
417
1941
417
                let ctx = unsafe {
1942
417
                    VMHostFuncContext::new(
1943
417
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
417
                        shared_signature_id,
1945
417
                        Box::new(self),
1946
417
                    )
1947
417
                };
1948
417
1949
417
                (ctx, shared_signature_id, trampoline)
1950
417
            }
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::event::emit_event<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::batch_verify_seals<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::root<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_seal<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
417
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
417
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
417
                /// calls the wrapped host function, and returns the translated
1807
417
                /// result back to Wasm.
1808
417
                ///
1809
417
                /// Note that this shim's ABI must *exactly* match that expected
1810
417
                /// by Cranelift, since Cranelift is generating raw function
1811
417
                /// calls directly to this function.
1812
417
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
417
                    vmctx: *mut VMOpaqueContext,
1814
417
                    caller_vmctx: *mut VMContext,
1815
417
                    $( $args: $args::Abi, )*
1816
417
                    retptr: R::Retptr,
1817
417
                ) -> R::Abi
1818
417
                where
1819
417
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
417
                    $( $args: WasmTy, )*
1821
417
                    R: WasmRet,
1822
417
                {
1823
417
                    enum CallResult<U> {
1824
417
                        Ok(U),
1825
417
                        Trap(anyhow::Error),
1826
417
                        Panic(Box<dyn std::any::Any + Send>),
1827
417
                    }
1828
417
1829
417
                    // Note that this `result` is intentionally scoped into a
1830
417
                    // separate block. Handling traps and panics will involve
1831
417
                    // longjmp-ing from this function which means we won't run
1832
417
                    // destructors. As a result anything requiring a destructor
1833
417
                    // should be part of this block, and the long-jmp-ing
1834
417
                    // happens after the block in handling `CallResult`.
1835
417
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
417
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
417
                        let state = (*vmctx).host_state();
1838
417
1839
417
                        // Double-check ourselves in debug mode, but we control
1840
417
                        // the `Any` here so an unsafe downcast should also
1841
417
                        // work.
1842
417
                        debug_assert!(state.is::<F>());
1843
417
                        let func = &*(state as *const _ as *const F);
1844
417
1845
417
                        let ret = {
1846
417
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
417
                                    return R::fallible_from_trap(trap);
1849
417
                                }
1850
417
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
417
                                let r = func(
1852
417
                                    caller.sub_caller(),
1853
417
                                    $( $args, )*
1854
417
                                );
1855
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
417
                                    return R::fallible_from_trap(trap);
1857
417
                                }
1858
417
                                r.into_fallible()
1859
417
                            }))
1860
417
                        };
1861
417
1862
417
                        // Note that we need to be careful when dealing with traps
1863
417
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
417
                        // that it's not unwinding and consequently no Rust
1865
417
                        // destructors are run. We need to be careful to ensure that
1866
417
                        // nothing on the stack needs a destructor when we exit
1867
417
                        // abnormally from this `match`, e.g. on `Err`, on
1868
417
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
417
                        match ret {
1870
417
                            Err(panic) => CallResult::Panic(panic),
1871
417
                            Ok(ret) => {
1872
417
                                // Because the wrapped function is not `unsafe`, we
1873
417
                                // can't assume it returned a value that is
1874
417
                                // compatible with this store.
1875
417
                                if !ret.compatible_with_store(caller.store.0) {
1876
417
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
417
                                } else {
1878
417
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
417
                                        Ok(val) => CallResult::Ok(val),
1880
417
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
417
                                    }
1882
417
                                }
1883
417
1884
417
                            }
1885
417
                        }
1886
417
                    });
1887
417
1888
417
                    match result {
1889
417
                        CallResult::Ok(val) => val,
1890
417
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
417
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
417
                    }
1893
417
                }
1894
417
1895
417
                /// This trampoline allows host code to indirectly call the
1896
417
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
417
                /// happens to reference our wrapped function).
1898
417
                ///
1899
417
                /// It reads the arguments out of the incoming `args` array,
1900
417
                /// calls the given function pointer, and then stores the result
1901
417
                /// back into the `args` array.
1902
417
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
417
                    callee_vmctx: *mut VMOpaqueContext,
1904
417
                    caller_vmctx: *mut VMContext,
1905
417
                    ptr: *const VMFunctionBody,
1906
417
                    args: *mut ValRaw,
1907
417
                )
1908
417
                where
1909
417
                    $($args: WasmTy,)*
1910
417
                    R: WasmRet,
1911
417
                {
1912
417
                    let ptr = mem::transmute::<
1913
417
                        *const VMFunctionBody,
1914
417
                        unsafe extern "C" fn(
1915
417
                            *mut VMOpaqueContext,
1916
417
                            *mut VMContext,
1917
417
                            $( $args::Abi, )*
1918
417
                            R::Retptr,
1919
417
                        ) -> R::Abi,
1920
417
                    >(ptr);
1921
417
1922
417
                    let mut _n = 0;
1923
417
                    $(
1924
417
                        let $args = $args::abi_from_raw(args.add(_n));
1925
417
                        _n += 1;
1926
417
                    )*
1927
417
                    R::wrap_trampoline(args, |retptr| {
1928
417
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
417
                    });
1930
417
                }
1931
417
1932
417
                let ty = R::func_type(
1933
417
                    None::<ValType>.into_iter()
1934
417
                        $(.chain(Some($args::valtype())))*
1935
417
                );
1936
417
1937
417
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
417
1939
417
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
417
1941
417
                let ctx = unsafe {
1942
417
                    VMHostFuncContext::new(
1943
417
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
417
                        shared_signature_id,
1945
417
                        Box::new(self),
1946
417
                    )
1947
417
                };
1948
417
1949
417
                (ctx, shared_signature_id, trampoline)
1950
417
            }
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::lookup_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u64, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
417
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
417
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
417
                /// calls the wrapped host function, and returns the translated
1807
417
                /// result back to Wasm.
1808
417
                ///
1809
417
                /// Note that this shim's ABI must *exactly* match that expected
1810
417
                /// by Cranelift, since Cranelift is generating raw function
1811
417
                /// calls directly to this function.
1812
417
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
417
                    vmctx: *mut VMOpaqueContext,
1814
417
                    caller_vmctx: *mut VMContext,
1815
417
                    $( $args: $args::Abi, )*
1816
417
                    retptr: R::Retptr,
1817
417
                ) -> R::Abi
1818
417
                where
1819
417
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
417
                    $( $args: WasmTy, )*
1821
417
                    R: WasmRet,
1822
417
                {
1823
417
                    enum CallResult<U> {
1824
417
                        Ok(U),
1825
417
                        Trap(anyhow::Error),
1826
417
                        Panic(Box<dyn std::any::Any + Send>),
1827
417
                    }
1828
417
1829
417
                    // Note that this `result` is intentionally scoped into a
1830
417
                    // separate block. Handling traps and panics will involve
1831
417
                    // longjmp-ing from this function which means we won't run
1832
417
                    // destructors. As a result anything requiring a destructor
1833
417
                    // should be part of this block, and the long-jmp-ing
1834
417
                    // happens after the block in handling `CallResult`.
1835
417
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
417
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
417
                        let state = (*vmctx).host_state();
1838
417
1839
417
                        // Double-check ourselves in debug mode, but we control
1840
417
                        // the `Any` here so an unsafe downcast should also
1841
417
                        // work.
1842
417
                        debug_assert!(state.is::<F>());
1843
417
                        let func = &*(state as *const _ as *const F);
1844
417
1845
417
                        let ret = {
1846
417
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
417
                                    return R::fallible_from_trap(trap);
1849
417
                                }
1850
417
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
417
                                let r = func(
1852
417
                                    caller.sub_caller(),
1853
417
                                    $( $args, )*
1854
417
                                );
1855
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
417
                                    return R::fallible_from_trap(trap);
1857
417
                                }
1858
417
                                r.into_fallible()
1859
417
                            }))
1860
417
                        };
1861
417
1862
417
                        // Note that we need to be careful when dealing with traps
1863
417
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
417
                        // that it's not unwinding and consequently no Rust
1865
417
                        // destructors are run. We need to be careful to ensure that
1866
417
                        // nothing on the stack needs a destructor when we exit
1867
417
                        // abnormally from this `match`, e.g. on `Err`, on
1868
417
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
417
                        match ret {
1870
417
                            Err(panic) => CallResult::Panic(panic),
1871
417
                            Ok(ret) => {
1872
417
                                // Because the wrapped function is not `unsafe`, we
1873
417
                                // can't assume it returned a value that is
1874
417
                                // compatible with this store.
1875
417
                                if !ret.compatible_with_store(caller.store.0) {
1876
417
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
417
                                } else {
1878
417
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
417
                                        Ok(val) => CallResult::Ok(val),
1880
417
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
417
                                    }
1882
417
                                }
1883
417
1884
417
                            }
1885
417
                        }
1886
417
                    });
1887
417
1888
417
                    match result {
1889
417
                        CallResult::Ok(val) => val,
1890
417
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
417
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
417
                    }
1893
417
                }
1894
417
1895
417
                /// This trampoline allows host code to indirectly call the
1896
417
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
417
                /// happens to reference our wrapped function).
1898
417
                ///
1899
417
                /// It reads the arguments out of the incoming `args` array,
1900
417
                /// calls the given function pointer, and then stores the result
1901
417
                /// back into the `args` array.
1902
417
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
417
                    callee_vmctx: *mut VMOpaqueContext,
1904
417
                    caller_vmctx: *mut VMContext,
1905
417
                    ptr: *const VMFunctionBody,
1906
417
                    args: *mut ValRaw,
1907
417
                )
1908
417
                where
1909
417
                    $($args: WasmTy,)*
1910
417
                    R: WasmRet,
1911
417
                {
1912
417
                    let ptr = mem::transmute::<
1913
417
                        *const VMFunctionBody,
1914
417
                        unsafe extern "C" fn(
1915
417
                            *mut VMOpaqueContext,
1916
417
                            *mut VMContext,
1917
417
                            $( $args::Abi, )*
1918
417
                            R::Retptr,
1919
417
                        ) -> R::Abi,
1920
417
                    >(ptr);
1921
417
1922
417
                    let mut _n = 0;
1923
417
                    $(
1924
417
                        let $args = $args::abi_from_raw(args.add(_n));
1925
417
                        _n += 1;
1926
417
                    )*
1927
417
                    R::wrap_trampoline(args, |retptr| {
1928
417
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
417
                    });
1930
417
                }
1931
417
1932
417
                let ty = R::func_type(
1933
417
                    None::<ValType>.into_iter()
1934
417
                        $(.chain(Some($args::valtype())))*
1935
417
                );
1936
417
1937
417
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
417
1939
417
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
417
1941
417
                let ctx = unsafe {
1942
417
                    VMHostFuncContext::new(
1943
417
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
417
                        shared_signature_id,
1945
417
                        Box::new(self),
1946
417
                    )
1947
417
                };
1948
417
1949
417
                (ctx, shared_signature_id, trampoline)
1950
417
            }
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::create_actor<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u64, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::enabled<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
417
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
417
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
417
                /// calls the wrapped host function, and returns the translated
1807
417
                /// result back to Wasm.
1808
417
                ///
1809
417
                /// Note that this shim's ABI must *exactly* match that expected
1810
417
                /// by Cranelift, since Cranelift is generating raw function
1811
417
                /// calls directly to this function.
1812
417
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
417
                    vmctx: *mut VMOpaqueContext,
1814
417
                    caller_vmctx: *mut VMContext,
1815
417
                    $( $args: $args::Abi, )*
1816
417
                    retptr: R::Retptr,
1817
417
                ) -> R::Abi
1818
417
                where
1819
417
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
417
                    $( $args: WasmTy, )*
1821
417
                    R: WasmRet,
1822
417
                {
1823
417
                    enum CallResult<U> {
1824
417
                        Ok(U),
1825
417
                        Trap(anyhow::Error),
1826
417
                        Panic(Box<dyn std::any::Any + Send>),
1827
417
                    }
1828
417
1829
417
                    // Note that this `result` is intentionally scoped into a
1830
417
                    // separate block. Handling traps and panics will involve
1831
417
                    // longjmp-ing from this function which means we won't run
1832
417
                    // destructors. As a result anything requiring a destructor
1833
417
                    // should be part of this block, and the long-jmp-ing
1834
417
                    // happens after the block in handling `CallResult`.
1835
417
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
417
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
417
                        let state = (*vmctx).host_state();
1838
417
1839
417
                        // Double-check ourselves in debug mode, but we control
1840
417
                        // the `Any` here so an unsafe downcast should also
1841
417
                        // work.
1842
417
                        debug_assert!(state.is::<F>());
1843
417
                        let func = &*(state as *const _ as *const F);
1844
417
1845
417
                        let ret = {
1846
417
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
417
                                    return R::fallible_from_trap(trap);
1849
417
                                }
1850
417
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
417
                                let r = func(
1852
417
                                    caller.sub_caller(),
1853
417
                                    $( $args, )*
1854
417
                                );
1855
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
417
                                    return R::fallible_from_trap(trap);
1857
417
                                }
1858
417
                                r.into_fallible()
1859
417
                            }))
1860
417
                        };
1861
417
1862
417
                        // Note that we need to be careful when dealing with traps
1863
417
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
417
                        // that it's not unwinding and consequently no Rust
1865
417
                        // destructors are run. We need to be careful to ensure that
1866
417
                        // nothing on the stack needs a destructor when we exit
1867
417
                        // abnormally from this `match`, e.g. on `Err`, on
1868
417
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
417
                        match ret {
1870
417
                            Err(panic) => CallResult::Panic(panic),
1871
417
                            Ok(ret) => {
1872
417
                                // Because the wrapped function is not `unsafe`, we
1873
417
                                // can't assume it returned a value that is
1874
417
                                // compatible with this store.
1875
417
                                if !ret.compatible_with_store(caller.store.0) {
1876
417
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
417
                                } else {
1878
417
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
417
                                        Ok(val) => CallResult::Ok(val),
1880
417
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
417
                                    }
1882
417
                                }
1883
417
1884
417
                            }
1885
417
                        }
1886
417
                    });
1887
417
1888
417
                    match result {
1889
417
                        CallResult::Ok(val) => val,
1890
417
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
417
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
417
                    }
1893
417
                }
1894
417
1895
417
                /// This trampoline allows host code to indirectly call the
1896
417
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
417
                /// happens to reference our wrapped function).
1898
417
                ///
1899
417
                /// It reads the arguments out of the incoming `args` array,
1900
417
                /// calls the given function pointer, and then stores the result
1901
417
                /// back into the `args` array.
1902
417
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
417
                    callee_vmctx: *mut VMOpaqueContext,
1904
417
                    caller_vmctx: *mut VMContext,
1905
417
                    ptr: *const VMFunctionBody,
1906
417
                    args: *mut ValRaw,
1907
417
                )
1908
417
                where
1909
417
                    $($args: WasmTy,)*
1910
417
                    R: WasmRet,
1911
417
                {
1912
417
                    let ptr = mem::transmute::<
1913
417
                        *const VMFunctionBody,
1914
417
                        unsafe extern "C" fn(
1915
417
                            *mut VMOpaqueContext,
1916
417
                            *mut VMContext,
1917
417
                            $( $args::Abi, )*
1918
417
                            R::Retptr,
1919
417
                        ) -> R::Abi,
1920
417
                    >(ptr);
1921
417
1922
417
                    let mut _n = 0;
1923
417
                    $(
1924
417
                        let $args = $args::abi_from_raw(args.add(_n));
1925
417
                        _n += 1;
1926
417
                    )*
1927
417
                    R::wrap_trampoline(args, |retptr| {
1928
417
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
417
                    });
1930
417
                }
1931
417
1932
417
                let ty = R::func_type(
1933
417
                    None::<ValType>.into_iter()
1934
417
                        $(.chain(Some($args::valtype())))*
1935
417
                );
1936
417
1937
417
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
417
1939
417
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
417
1941
417
                let ctx = unsafe {
1942
417
                    VMHostFuncContext::new(
1943
417
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
417
                        shared_signature_id,
1945
417
                        Box::new(self),
1946
417
                    )
1947
417
                };
1948
417
1949
417
                (ctx, shared_signature_id, trampoline)
1950
417
            }
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<u64, fvm::kernel::error::ExecutionError>, fvm::syscalls::gas::available<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>,), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, u32, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::compute_unsealed_sector_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, i64, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
417
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
417
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
417
                /// calls the wrapped host function, and returns the translated
1807
417
                /// result back to Wasm.
1808
417
                ///
1809
417
                /// Note that this shim's ABI must *exactly* match that expected
1810
417
                /// by Cranelift, since Cranelift is generating raw function
1811
417
                /// calls directly to this function.
1812
417
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
417
                    vmctx: *mut VMOpaqueContext,
1814
417
                    caller_vmctx: *mut VMContext,
1815
417
                    $( $args: $args::Abi, )*
1816
417
                    retptr: R::Retptr,
1817
417
                ) -> R::Abi
1818
417
                where
1819
417
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
417
                    $( $args: WasmTy, )*
1821
417
                    R: WasmRet,
1822
417
                {
1823
417
                    enum CallResult<U> {
1824
417
                        Ok(U),
1825
417
                        Trap(anyhow::Error),
1826
417
                        Panic(Box<dyn std::any::Any + Send>),
1827
417
                    }
1828
417
1829
417
                    // Note that this `result` is intentionally scoped into a
1830
417
                    // separate block. Handling traps and panics will involve
1831
417
                    // longjmp-ing from this function which means we won't run
1832
417
                    // destructors. As a result anything requiring a destructor
1833
417
                    // should be part of this block, and the long-jmp-ing
1834
417
                    // happens after the block in handling `CallResult`.
1835
417
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
417
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
417
                        let state = (*vmctx).host_state();
1838
417
1839
417
                        // Double-check ourselves in debug mode, but we control
1840
417
                        // the `Any` here so an unsafe downcast should also
1841
417
                        // work.
1842
417
                        debug_assert!(state.is::<F>());
1843
417
                        let func = &*(state as *const _ as *const F);
1844
417
1845
417
                        let ret = {
1846
417
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
417
                                    return R::fallible_from_trap(trap);
1849
417
                                }
1850
417
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
417
                                let r = func(
1852
417
                                    caller.sub_caller(),
1853
417
                                    $( $args, )*
1854
417
                                );
1855
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
417
                                    return R::fallible_from_trap(trap);
1857
417
                                }
1858
417
                                r.into_fallible()
1859
417
                            }))
1860
417
                        };
1861
417
1862
417
                        // Note that we need to be careful when dealing with traps
1863
417
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
417
                        // that it's not unwinding and consequently no Rust
1865
417
                        // destructors are run. We need to be careful to ensure that
1866
417
                        // nothing on the stack needs a destructor when we exit
1867
417
                        // abnormally from this `match`, e.g. on `Err`, on
1868
417
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
417
                        match ret {
1870
417
                            Err(panic) => CallResult::Panic(panic),
1871
417
                            Ok(ret) => {
1872
417
                                // Because the wrapped function is not `unsafe`, we
1873
417
                                // can't assume it returned a value that is
1874
417
                                // compatible with this store.
1875
417
                                if !ret.compatible_with_store(caller.store.0) {
1876
417
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
417
                                } else {
1878
417
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
417
                                        Ok(val) => CallResult::Ok(val),
1880
417
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
417
                                    }
1882
417
                                }
1883
417
1884
417
                            }
1885
417
                        }
1886
417
                    });
1887
417
1888
417
                    match result {
1889
417
                        CallResult::Ok(val) => val,
1890
417
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
417
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
417
                    }
1893
417
                }
1894
417
1895
417
                /// This trampoline allows host code to indirectly call the
1896
417
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
417
                /// happens to reference our wrapped function).
1898
417
                ///
1899
417
                /// It reads the arguments out of the incoming `args` array,
1900
417
                /// calls the given function pointer, and then stores the result
1901
417
                /// back into the `args` array.
1902
417
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
417
                    callee_vmctx: *mut VMOpaqueContext,
1904
417
                    caller_vmctx: *mut VMContext,
1905
417
                    ptr: *const VMFunctionBody,
1906
417
                    args: *mut ValRaw,
1907
417
                )
1908
417
                where
1909
417
                    $($args: WasmTy,)*
1910
417
                    R: WasmRet,
1911
417
                {
1912
417
                    let ptr = mem::transmute::<
1913
417
                        *const VMFunctionBody,
1914
417
                        unsafe extern "C" fn(
1915
417
                            *mut VMOpaqueContext,
1916
417
                            *mut VMContext,
1917
417
                            $( $args::Abi, )*
1918
417
                            R::Retptr,
1919
417
                        ) -> R::Abi,
1920
417
                    >(ptr);
1921
417
1922
417
                    let mut _n = 0;
1923
417
                    $(
1924
417
                        let $args = $args::abi_from_raw(args.add(_n));
1925
417
                        _n += 1;
1926
417
                    )*
1927
417
                    R::wrap_trampoline(args, |retptr| {
1928
417
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
417
                    });
1930
417
                }
1931
417
1932
417
                let ty = R::func_type(
1933
417
                    None::<ValType>.into_iter()
1934
417
                        $(.chain(Some($args::valtype())))*
1935
417
                );
1936
417
1937
417
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
417
1939
417
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
417
1941
417
                let ctx = unsafe {
1942
417
                    VMHostFuncContext::new(
1943
417
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
417
                        shared_signature_id,
1945
417
                        Box::new(self),
1946
417
                    )
1947
417
                };
1948
417
1949
417
                (ctx, shared_signature_id, trampoline)
1950
417
            }
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_builtin_actor_type<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u64, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::resolve_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
417
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
417
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
417
                /// calls the wrapped host function, and returns the translated
1807
417
                /// result back to Wasm.
1808
417
                ///
1809
417
                /// Note that this shim's ABI must *exactly* match that expected
1810
417
                /// by Cranelift, since Cranelift is generating raw function
1811
417
                /// calls directly to this function.
1812
417
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
417
                    vmctx: *mut VMOpaqueContext,
1814
417
                    caller_vmctx: *mut VMContext,
1815
417
                    $( $args: $args::Abi, )*
1816
417
                    retptr: R::Retptr,
1817
417
                ) -> R::Abi
1818
417
                where
1819
417
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
417
                    $( $args: WasmTy, )*
1821
417
                    R: WasmRet,
1822
417
                {
1823
417
                    enum CallResult<U> {
1824
417
                        Ok(U),
1825
417
                        Trap(anyhow::Error),
1826
417
                        Panic(Box<dyn std::any::Any + Send>),
1827
417
                    }
1828
417
1829
417
                    // Note that this `result` is intentionally scoped into a
1830
417
                    // separate block. Handling traps and panics will involve
1831
417
                    // longjmp-ing from this function which means we won't run
1832
417
                    // destructors. As a result anything requiring a destructor
1833
417
                    // should be part of this block, and the long-jmp-ing
1834
417
                    // happens after the block in handling `CallResult`.
1835
417
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
417
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
417
                        let state = (*vmctx).host_state();
1838
417
1839
417
                        // Double-check ourselves in debug mode, but we control
1840
417
                        // the `Any` here so an unsafe downcast should also
1841
417
                        // work.
1842
417
                        debug_assert!(state.is::<F>());
1843
417
                        let func = &*(state as *const _ as *const F);
1844
417
1845
417
                        let ret = {
1846
417
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
417
                                    return R::fallible_from_trap(trap);
1849
417
                                }
1850
417
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
417
                                let r = func(
1852
417
                                    caller.sub_caller(),
1853
417
                                    $( $args, )*
1854
417
                                );
1855
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
417
                                    return R::fallible_from_trap(trap);
1857
417
                                }
1858
417
                                r.into_fallible()
1859
417
                            }))
1860
417
                        };
1861
417
1862
417
                        // Note that we need to be careful when dealing with traps
1863
417
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
417
                        // that it's not unwinding and consequently no Rust
1865
417
                        // destructors are run. We need to be careful to ensure that
1866
417
                        // nothing on the stack needs a destructor when we exit
1867
417
                        // abnormally from this `match`, e.g. on `Err`, on
1868
417
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
417
                        match ret {
1870
417
                            Err(panic) => CallResult::Panic(panic),
1871
417
                            Ok(ret) => {
1872
417
                                // Because the wrapped function is not `unsafe`, we
1873
417
                                // can't assume it returned a value that is
1874
417
                                // compatible with this store.
1875
417
                                if !ret.compatible_with_store(caller.store.0) {
1876
417
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
417
                                } else {
1878
417
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
417
                                        Ok(val) => CallResult::Ok(val),
1880
417
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
417
                                    }
1882
417
                                }
1883
417
1884
417
                            }
1885
417
                        }
1886
417
                    });
1887
417
1888
417
                    match result {
1889
417
                        CallResult::Ok(val) => val,
1890
417
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
417
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
417
                    }
1893
417
                }
1894
417
1895
417
                /// This trampoline allows host code to indirectly call the
1896
417
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
417
                /// happens to reference our wrapped function).
1898
417
                ///
1899
417
                /// It reads the arguments out of the incoming `args` array,
1900
417
                /// calls the given function pointer, and then stores the result
1901
417
                /// back into the `args` array.
1902
417
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
417
                    callee_vmctx: *mut VMOpaqueContext,
1904
417
                    caller_vmctx: *mut VMContext,
1905
417
                    ptr: *const VMFunctionBody,
1906
417
                    args: *mut ValRaw,
1907
417
                )
1908
417
                where
1909
417
                    $($args: WasmTy,)*
1910
417
                    R: WasmRet,
1911
417
                {
1912
417
                    let ptr = mem::transmute::<
1913
417
                        *const VMFunctionBody,
1914
417
                        unsafe extern "C" fn(
1915
417
                            *mut VMOpaqueContext,
1916
417
                            *mut VMContext,
1917
417
                            $( $args::Abi, )*
1918
417
                            R::Retptr,
1919
417
                        ) -> R::Abi,
1920
417
                    >(ptr);
1921
417
1922
417
                    let mut _n = 0;
1923
417
                    $(
1924
417
                        let $args = $args::abi_from_raw(args.add(_n));
1925
417
                        _n += 1;
1926
417
                    )*
1927
417
                    R::wrap_trampoline(args, |retptr| {
1928
417
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
417
                    });
1930
417
                }
1931
417
1932
417
                let ty = R::func_type(
1933
417
                    None::<ValType>.into_iter()
1934
417
                        $(.chain(Some($args::valtype())))*
1935
417
                );
1936
417
1937
417
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
417
1939
417
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
417
1941
417
                let ctx = unsafe {
1942
417
                    VMHostFuncContext::new(
1943
417
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
417
                        shared_signature_id,
1945
417
                        Box::new(self),
1946
417
                    )
1947
417
                };
1948
417
1949
417
                (ctx, shared_signature_id, trampoline)
1950
417
            }
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::out::vm::MessageContext, fvm::kernel::error::ExecutionError>, fvm::syscalls::vm::message_context<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>,), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u64, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::resolve_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_code_cid_for_type<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, i32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
417
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
417
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
417
                /// calls the wrapped host function, and returns the translated
1807
417
                /// result back to Wasm.
1808
417
                ///
1809
417
                /// Note that this shim's ABI must *exactly* match that expected
1810
417
                /// by Cranelift, since Cranelift is generating raw function
1811
417
                /// calls directly to this function.
1812
417
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
417
                    vmctx: *mut VMOpaqueContext,
1814
417
                    caller_vmctx: *mut VMContext,
1815
417
                    $( $args: $args::Abi, )*
1816
417
                    retptr: R::Retptr,
1817
417
                ) -> R::Abi
1818
417
                where
1819
417
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
417
                    $( $args: WasmTy, )*
1821
417
                    R: WasmRet,
1822
417
                {
1823
417
                    enum CallResult<U> {
1824
417
                        Ok(U),
1825
417
                        Trap(anyhow::Error),
1826
417
                        Panic(Box<dyn std::any::Any + Send>),
1827
417
                    }
1828
417
1829
417
                    // Note that this `result` is intentionally scoped into a
1830
417
                    // separate block. Handling traps and panics will involve
1831
417
                    // longjmp-ing from this function which means we won't run
1832
417
                    // destructors. As a result anything requiring a destructor
1833
417
                    // should be part of this block, and the long-jmp-ing
1834
417
                    // happens after the block in handling `CallResult`.
1835
417
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
417
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
417
                        let state = (*vmctx).host_state();
1838
417
1839
417
                        // Double-check ourselves in debug mode, but we control
1840
417
                        // the `Any` here so an unsafe downcast should also
1841
417
                        // work.
1842
417
                        debug_assert!(state.is::<F>());
1843
417
                        let func = &*(state as *const _ as *const F);
1844
417
1845
417
                        let ret = {
1846
417
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
417
                                    return R::fallible_from_trap(trap);
1849
417
                                }
1850
417
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
417
                                let r = func(
1852
417
                                    caller.sub_caller(),
1853
417
                                    $( $args, )*
1854
417
                                );
1855
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
417
                                    return R::fallible_from_trap(trap);
1857
417
                                }
1858
417
                                r.into_fallible()
1859
417
                            }))
1860
417
                        };
1861
417
1862
417
                        // Note that we need to be careful when dealing with traps
1863
417
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
417
                        // that it's not unwinding and consequently no Rust
1865
417
                        // destructors are run. We need to be careful to ensure that
1866
417
                        // nothing on the stack needs a destructor when we exit
1867
417
                        // abnormally from this `match`, e.g. on `Err`, on
1868
417
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
417
                        match ret {
1870
417
                            Err(panic) => CallResult::Panic(panic),
1871
417
                            Ok(ret) => {
1872
417
                                // Because the wrapped function is not `unsafe`, we
1873
417
                                // can't assume it returned a value that is
1874
417
                                // compatible with this store.
1875
417
                                if !ret.compatible_with_store(caller.store.0) {
1876
417
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
417
                                } else {
1878
417
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
417
                                        Ok(val) => CallResult::Ok(val),
1880
417
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
417
                                    }
1882
417
                                }
1883
417
1884
417
                            }
1885
417
                        }
1886
417
                    });
1887
417
1888
417
                    match result {
1889
417
                        CallResult::Ok(val) => val,
1890
417
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
417
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
417
                    }
1893
417
                }
1894
417
1895
417
                /// This trampoline allows host code to indirectly call the
1896
417
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
417
                /// happens to reference our wrapped function).
1898
417
                ///
1899
417
                /// It reads the arguments out of the incoming `args` array,
1900
417
                /// calls the given function pointer, and then stores the result
1901
417
                /// back into the `args` array.
1902
417
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
417
                    callee_vmctx: *mut VMOpaqueContext,
1904
417
                    caller_vmctx: *mut VMContext,
1905
417
                    ptr: *const VMFunctionBody,
1906
417
                    args: *mut ValRaw,
1907
417
                )
1908
417
                where
1909
417
                    $($args: WasmTy,)*
1910
417
                    R: WasmRet,
1911
417
                {
1912
417
                    let ptr = mem::transmute::<
1913
417
                        *const VMFunctionBody,
1914
417
                        unsafe extern "C" fn(
1915
417
                            *mut VMOpaqueContext,
1916
417
                            *mut VMContext,
1917
417
                            $( $args::Abi, )*
1918
417
                            R::Retptr,
1919
417
                        ) -> R::Abi,
1920
417
                    >(ptr);
1921
417
1922
417
                    let mut _n = 0;
1923
417
                    $(
1924
417
                        let $args = $args::abi_from_raw(args.add(_n));
1925
417
                        _n += 1;
1926
417
                    )*
1927
417
                    R::wrap_trampoline(args, |retptr| {
1928
417
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
417
                    });
1930
417
                }
1931
417
1932
417
                let ty = R::func_type(
1933
417
                    None::<ValType>.into_iter()
1934
417
                        $(.chain(Some($args::valtype())))*
1935
417
                );
1936
417
1937
417
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
417
1939
417
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
417
1941
417
                let ctx = unsafe {
1942
417
                    VMHostFuncContext::new(
1943
417
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
417
                        shared_signature_id,
1945
417
                        Box::new(self),
1946
417
                    )
1947
417
                };
1948
417
1949
417
                (ctx, shared_signature_id, trampoline)
1950
417
            }
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_builtin_actor_type<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
417
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
417
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
417
                /// calls the wrapped host function, and returns the translated
1807
417
                /// result back to Wasm.
1808
417
                ///
1809
417
                /// Note that this shim's ABI must *exactly* match that expected
1810
417
                /// by Cranelift, since Cranelift is generating raw function
1811
417
                /// calls directly to this function.
1812
417
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
417
                    vmctx: *mut VMOpaqueContext,
1814
417
                    caller_vmctx: *mut VMContext,
1815
417
                    $( $args: $args::Abi, )*
1816
417
                    retptr: R::Retptr,
1817
417
                ) -> R::Abi
1818
417
                where
1819
417
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
417
                    $( $args: WasmTy, )*
1821
417
                    R: WasmRet,
1822
417
                {
1823
417
                    enum CallResult<U> {
1824
417
                        Ok(U),
1825
417
                        Trap(anyhow::Error),
1826
417
                        Panic(Box<dyn std::any::Any + Send>),
1827
417
                    }
1828
417
1829
417
                    // Note that this `result` is intentionally scoped into a
1830
417
                    // separate block. Handling traps and panics will involve
1831
417
                    // longjmp-ing from this function which means we won't run
1832
417
                    // destructors. As a result anything requiring a destructor
1833
417
                    // should be part of this block, and the long-jmp-ing
1834
417
                    // happens after the block in handling `CallResult`.
1835
417
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
417
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
417
                        let state = (*vmctx).host_state();
1838
417
1839
417
                        // Double-check ourselves in debug mode, but we control
1840
417
                        // the `Any` here so an unsafe downcast should also
1841
417
                        // work.
1842
417
                        debug_assert!(state.is::<F>());
1843
417
                        let func = &*(state as *const _ as *const F);
1844
417
1845
417
                        let ret = {
1846
417
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
417
                                    return R::fallible_from_trap(trap);
1849
417
                                }
1850
417
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
417
                                let r = func(
1852
417
                                    caller.sub_caller(),
1853
417
                                    $( $args, )*
1854
417
                                );
1855
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
417
                                    return R::fallible_from_trap(trap);
1857
417
                                }
1858
417
                                r.into_fallible()
1859
417
                            }))
1860
417
                        };
1861
417
1862
417
                        // Note that we need to be careful when dealing with traps
1863
417
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
417
                        // that it's not unwinding and consequently no Rust
1865
417
                        // destructors are run. We need to be careful to ensure that
1866
417
                        // nothing on the stack needs a destructor when we exit
1867
417
                        // abnormally from this `match`, e.g. on `Err`, on
1868
417
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
417
                        match ret {
1870
417
                            Err(panic) => CallResult::Panic(panic),
1871
417
                            Ok(ret) => {
1872
417
                                // Because the wrapped function is not `unsafe`, we
1873
417
                                // can't assume it returned a value that is
1874
417
                                // compatible with this store.
1875
417
                                if !ret.compatible_with_store(caller.store.0) {
1876
417
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
417
                                } else {
1878
417
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
417
                                        Ok(val) => CallResult::Ok(val),
1880
417
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
417
                                    }
1882
417
                                }
1883
417
1884
417
                            }
1885
417
                        }
1886
417
                    });
1887
417
1888
417
                    match result {
1889
417
                        CallResult::Ok(val) => val,
1890
417
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
417
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
417
                    }
1893
417
                }
1894
417
1895
417
                /// This trampoline allows host code to indirectly call the
1896
417
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
417
                /// happens to reference our wrapped function).
1898
417
                ///
1899
417
                /// It reads the arguments out of the incoming `args` array,
1900
417
                /// calls the given function pointer, and then stores the result
1901
417
                /// back into the `args` array.
1902
417
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
417
                    callee_vmctx: *mut VMOpaqueContext,
1904
417
                    caller_vmctx: *mut VMContext,
1905
417
                    ptr: *const VMFunctionBody,
1906
417
                    args: *mut ValRaw,
1907
417
                )
1908
417
                where
1909
417
                    $($args: WasmTy,)*
1910
417
                    R: WasmRet,
1911
417
                {
1912
417
                    let ptr = mem::transmute::<
1913
417
                        *const VMFunctionBody,
1914
417
                        unsafe extern "C" fn(
1915
417
                            *mut VMOpaqueContext,
1916
417
                            *mut VMContext,
1917
417
                            $( $args::Abi, )*
1918
417
                            R::Retptr,
1919
417
                        ) -> R::Abi,
1920
417
                    >(ptr);
1921
417
1922
417
                    let mut _n = 0;
1923
417
                    $(
1924
417
                        let $args = $args::abi_from_raw(args.add(_n));
1925
417
                        _n += 1;
1926
417
                    )*
1927
417
                    R::wrap_trampoline(args, |retptr| {
1928
417
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
417
                    });
1930
417
                }
1931
417
1932
417
                let ty = R::func_type(
1933
417
                    None::<ValType>.into_iter()
1934
417
                        $(.chain(Some($args::valtype())))*
1935
417
                );
1936
417
1937
417
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
417
1939
417
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
417
1941
417
                let ctx = unsafe {
1942
417
                    VMHostFuncContext::new(
1943
417
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
417
                        shared_signature_id,
1945
417
                        Box::new(self),
1946
417
                    )
1947
417
                };
1948
417
1949
417
                (ctx, shared_signature_id, trampoline)
1950
417
            }
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_aggregate_seals<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32, u32, u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_signature<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, u32, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
417
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
417
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
417
                /// calls the wrapped host function, and returns the translated
1807
417
                /// result back to Wasm.
1808
417
                ///
1809
417
                /// Note that this shim's ABI must *exactly* match that expected
1810
417
                /// by Cranelift, since Cranelift is generating raw function
1811
417
                /// calls directly to this function.
1812
417
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
417
                    vmctx: *mut VMOpaqueContext,
1814
417
                    caller_vmctx: *mut VMContext,
1815
417
                    $( $args: $args::Abi, )*
1816
417
                    retptr: R::Retptr,
1817
417
                ) -> R::Abi
1818
417
                where
1819
417
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
417
                    $( $args: WasmTy, )*
1821
417
                    R: WasmRet,
1822
417
                {
1823
417
                    enum CallResult<U> {
1824
417
                        Ok(U),
1825
417
                        Trap(anyhow::Error),
1826
417
                        Panic(Box<dyn std::any::Any + Send>),
1827
417
                    }
1828
417
1829
417
                    // Note that this `result` is intentionally scoped into a
1830
417
                    // separate block. Handling traps and panics will involve
1831
417
                    // longjmp-ing from this function which means we won't run
1832
417
                    // destructors. As a result anything requiring a destructor
1833
417
                    // should be part of this block, and the long-jmp-ing
1834
417
                    // happens after the block in handling `CallResult`.
1835
417
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
417
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
417
                        let state = (*vmctx).host_state();
1838
417
1839
417
                        // Double-check ourselves in debug mode, but we control
1840
417
                        // the `Any` here so an unsafe downcast should also
1841
417
                        // work.
1842
417
                        debug_assert!(state.is::<F>());
1843
417
                        let func = &*(state as *const _ as *const F);
1844
417
1845
417
                        let ret = {
1846
417
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
417
                                    return R::fallible_from_trap(trap);
1849
417
                                }
1850
417
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
417
                                let r = func(
1852
417
                                    caller.sub_caller(),
1853
417
                                    $( $args, )*
1854
417
                                );
1855
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
417
                                    return R::fallible_from_trap(trap);
1857
417
                                }
1858
417
                                r.into_fallible()
1859
417
                            }))
1860
417
                        };
1861
417
1862
417
                        // Note that we need to be careful when dealing with traps
1863
417
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
417
                        // that it's not unwinding and consequently no Rust
1865
417
                        // destructors are run. We need to be careful to ensure that
1866
417
                        // nothing on the stack needs a destructor when we exit
1867
417
                        // abnormally from this `match`, e.g. on `Err`, on
1868
417
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
417
                        match ret {
1870
417
                            Err(panic) => CallResult::Panic(panic),
1871
417
                            Ok(ret) => {
1872
417
                                // Because the wrapped function is not `unsafe`, we
1873
417
                                // can't assume it returned a value that is
1874
417
                                // compatible with this store.
1875
417
                                if !ret.compatible_with_store(caller.store.0) {
1876
417
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
417
                                } else {
1878
417
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
417
                                        Ok(val) => CallResult::Ok(val),
1880
417
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
417
                                    }
1882
417
                                }
1883
417
1884
417
                            }
1885
417
                        }
1886
417
                    });
1887
417
1888
417
                    match result {
1889
417
                        CallResult::Ok(val) => val,
1890
417
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
417
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
417
                    }
1893
417
                }
1894
417
1895
417
                /// This trampoline allows host code to indirectly call the
1896
417
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
417
                /// happens to reference our wrapped function).
1898
417
                ///
1899
417
                /// It reads the arguments out of the incoming `args` array,
1900
417
                /// calls the given function pointer, and then stores the result
1901
417
                /// back into the `args` array.
1902
417
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
417
                    callee_vmctx: *mut VMOpaqueContext,
1904
417
                    caller_vmctx: *mut VMContext,
1905
417
                    ptr: *const VMFunctionBody,
1906
417
                    args: *mut ValRaw,
1907
417
                )
1908
417
                where
1909
417
                    $($args: WasmTy,)*
1910
417
                    R: WasmRet,
1911
417
                {
1912
417
                    let ptr = mem::transmute::<
1913
417
                        *const VMFunctionBody,
1914
417
                        unsafe extern "C" fn(
1915
417
                            *mut VMOpaqueContext,
1916
417
                            *mut VMContext,
1917
417
                            $( $args::Abi, )*
1918
417
                            R::Retptr,
1919
417
                        ) -> R::Abi,
1920
417
                    >(ptr);
1921
417
1922
417
                    let mut _n = 0;
1923
417
                    $(
1924
417
                        let $args = $args::abi_from_raw(args.add(_n));
1925
417
                        _n += 1;
1926
417
                    )*
1927
417
                    R::wrap_trampoline(args, |retptr| {
1928
417
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
417
                    });
1930
417
                }
1931
417
1932
417
                let ty = R::func_type(
1933
417
                    None::<ValType>.into_iter()
1934
417
                        $(.chain(Some($args::valtype())))*
1935
417
                );
1936
417
1937
417
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
417
1939
417
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
417
1941
417
                let ctx = unsafe {
1942
417
                    VMHostFuncContext::new(
1943
417
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
417
                        shared_signature_id,
1945
417
                        Box::new(self),
1946
417
                    )
1947
417
                };
1948
417
1949
417
                (ctx, shared_signature_id, trampoline)
1950
417
            }
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::tipset_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, i64, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_read<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::hash<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u64, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_replica_update<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::event::emit_event<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
417
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
417
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
417
                /// calls the wrapped host function, and returns the translated
1807
417
                /// result back to Wasm.
1808
417
                ///
1809
417
                /// Note that this shim's ABI must *exactly* match that expected
1810
417
                /// by Cranelift, since Cranelift is generating raw function
1811
417
                /// calls directly to this function.
1812
417
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
417
                    vmctx: *mut VMOpaqueContext,
1814
417
                    caller_vmctx: *mut VMContext,
1815
417
                    $( $args: $args::Abi, )*
1816
417
                    retptr: R::Retptr,
1817
417
                ) -> R::Abi
1818
417
                where
1819
417
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
417
                    $( $args: WasmTy, )*
1821
417
                    R: WasmRet,
1822
417
                {
1823
417
                    enum CallResult<U> {
1824
417
                        Ok(U),
1825
417
                        Trap(anyhow::Error),
1826
417
                        Panic(Box<dyn std::any::Any + Send>),
1827
417
                    }
1828
417
1829
417
                    // Note that this `result` is intentionally scoped into a
1830
417
                    // separate block. Handling traps and panics will involve
1831
417
                    // longjmp-ing from this function which means we won't run
1832
417
                    // destructors. As a result anything requiring a destructor
1833
417
                    // should be part of this block, and the long-jmp-ing
1834
417
                    // happens after the block in handling `CallResult`.
1835
417
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
417
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
417
                        let state = (*vmctx).host_state();
1838
417
1839
417
                        // Double-check ourselves in debug mode, but we control
1840
417
                        // the `Any` here so an unsafe downcast should also
1841
417
                        // work.
1842
417
                        debug_assert!(state.is::<F>());
1843
417
                        let func = &*(state as *const _ as *const F);
1844
417
1845
417
                        let ret = {
1846
417
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
417
                                    return R::fallible_from_trap(trap);
1849
417
                                }
1850
417
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
417
                                let r = func(
1852
417
                                    caller.sub_caller(),
1853
417
                                    $( $args, )*
1854
417
                                );
1855
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
417
                                    return R::fallible_from_trap(trap);
1857
417
                                }
1858
417
                                r.into_fallible()
1859
417
                            }))
1860
417
                        };
1861
417
1862
417
                        // Note that we need to be careful when dealing with traps
1863
417
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
417
                        // that it's not unwinding and consequently no Rust
1865
417
                        // destructors are run. We need to be careful to ensure that
1866
417
                        // nothing on the stack needs a destructor when we exit
1867
417
                        // abnormally from this `match`, e.g. on `Err`, on
1868
417
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
417
                        match ret {
1870
417
                            Err(panic) => CallResult::Panic(panic),
1871
417
                            Ok(ret) => {
1872
417
                                // Because the wrapped function is not `unsafe`, we
1873
417
                                // can't assume it returned a value that is
1874
417
                                // compatible with this store.
1875
417
                                if !ret.compatible_with_store(caller.store.0) {
1876
417
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
417
                                } else {
1878
417
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
417
                                        Ok(val) => CallResult::Ok(val),
1880
417
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
417
                                    }
1882
417
                                }
1883
417
1884
417
                            }
1885
417
                        }
1886
417
                    });
1887
417
1888
417
                    match result {
1889
417
                        CallResult::Ok(val) => val,
1890
417
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
417
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
417
                    }
1893
417
                }
1894
417
1895
417
                /// This trampoline allows host code to indirectly call the
1896
417
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
417
                /// happens to reference our wrapped function).
1898
417
                ///
1899
417
                /// It reads the arguments out of the incoming `args` array,
1900
417
                /// calls the given function pointer, and then stores the result
1901
417
                /// back into the `args` array.
1902
417
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
417
                    callee_vmctx: *mut VMOpaqueContext,
1904
417
                    caller_vmctx: *mut VMContext,
1905
417
                    ptr: *const VMFunctionBody,
1906
417
                    args: *mut ValRaw,
1907
417
                )
1908
417
                where
1909
417
                    $($args: WasmTy,)*
1910
417
                    R: WasmRet,
1911
417
                {
1912
417
                    let ptr = mem::transmute::<
1913
417
                        *const VMFunctionBody,
1914
417
                        unsafe extern "C" fn(
1915
417
                            *mut VMOpaqueContext,
1916
417
                            *mut VMContext,
1917
417
                            $( $args::Abi, )*
1918
417
                            R::Retptr,
1919
417
                        ) -> R::Abi,
1920
417
                    >(ptr);
1921
417
1922
417
                    let mut _n = 0;
1923
417
                    $(
1924
417
                        let $args = $args::abi_from_raw(args.add(_n));
1925
417
                        _n += 1;
1926
417
                    )*
1927
417
                    R::wrap_trampoline(args, |retptr| {
1928
417
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
417
                    });
1930
417
                }
1931
417
1932
417
                let ty = R::func_type(
1933
417
                    None::<ValType>.into_iter()
1934
417
                        $(.chain(Some($args::valtype())))*
1935
417
                );
1936
417
1937
417
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
417
1939
417
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
417
1941
417
                let ctx = unsafe {
1942
417
                    VMHostFuncContext::new(
1943
417
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
417
                        shared_signature_id,
1945
417
                        Box::new(self),
1946
417
                    )
1947
417
                };
1948
417
1949
417
                (ctx, shared_signature_id, trampoline)
1950
417
            }
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::out::vm::MessageContext, fvm::kernel::error::ExecutionError>, fvm::syscalls::vm::message_context<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
417
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
417
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
417
                /// calls the wrapped host function, and returns the translated
1807
417
                /// result back to Wasm.
1808
417
                ///
1809
417
                /// Note that this shim's ABI must *exactly* match that expected
1810
417
                /// by Cranelift, since Cranelift is generating raw function
1811
417
                /// calls directly to this function.
1812
417
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
417
                    vmctx: *mut VMOpaqueContext,
1814
417
                    caller_vmctx: *mut VMContext,
1815
417
                    $( $args: $args::Abi, )*
1816
417
                    retptr: R::Retptr,
1817
417
                ) -> R::Abi
1818
417
                where
1819
417
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
417
                    $( $args: WasmTy, )*
1821
417
                    R: WasmRet,
1822
417
                {
1823
417
                    enum CallResult<U> {
1824
417
                        Ok(U),
1825
417
                        Trap(anyhow::Error),
1826
417
                        Panic(Box<dyn std::any::Any + Send>),
1827
417
                    }
1828
417
1829
417
                    // Note that this `result` is intentionally scoped into a
1830
417
                    // separate block. Handling traps and panics will involve
1831
417
                    // longjmp-ing from this function which means we won't run
1832
417
                    // destructors. As a result anything requiring a destructor
1833
417
                    // should be part of this block, and the long-jmp-ing
1834
417
                    // happens after the block in handling `CallResult`.
1835
417
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
417
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
417
                        let state = (*vmctx).host_state();
1838
417
1839
417
                        // Double-check ourselves in debug mode, but we control
1840
417
                        // the `Any` here so an unsafe downcast should also
1841
417
                        // work.
1842
417
                        debug_assert!(state.is::<F>());
1843
417
                        let func = &*(state as *const _ as *const F);
1844
417
1845
417
                        let ret = {
1846
417
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
417
                                    return R::fallible_from_trap(trap);
1849
417
                                }
1850
417
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
417
                                let r = func(
1852
417
                                    caller.sub_caller(),
1853
417
                                    $( $args, )*
1854
417
                                );
1855
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
417
                                    return R::fallible_from_trap(trap);
1857
417
                                }
1858
417
                                r.into_fallible()
1859
417
                            }))
1860
417
                        };
1861
417
1862
417
                        // Note that we need to be careful when dealing with traps
1863
417
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
417
                        // that it's not unwinding and consequently no Rust
1865
417
                        // destructors are run. We need to be careful to ensure that
1866
417
                        // nothing on the stack needs a destructor when we exit
1867
417
                        // abnormally from this `match`, e.g. on `Err`, on
1868
417
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
417
                        match ret {
1870
417
                            Err(panic) => CallResult::Panic(panic),
1871
417
                            Ok(ret) => {
1872
417
                                // Because the wrapped function is not `unsafe`, we
1873
417
                                // can't assume it returned a value that is
1874
417
                                // compatible with this store.
1875
417
                                if !ret.compatible_with_store(caller.store.0) {
1876
417
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
417
                                } else {
1878
417
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
417
                                        Ok(val) => CallResult::Ok(val),
1880
417
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
417
                                    }
1882
417
                                }
1883
417
1884
417
                            }
1885
417
                        }
1886
417
                    });
1887
417
1888
417
                    match result {
1889
417
                        CallResult::Ok(val) => val,
1890
417
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
417
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
417
                    }
1893
417
                }
1894
417
1895
417
                /// This trampoline allows host code to indirectly call the
1896
417
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
417
                /// happens to reference our wrapped function).
1898
417
                ///
1899
417
                /// It reads the arguments out of the incoming `args` array,
1900
417
                /// calls the given function pointer, and then stores the result
1901
417
                /// back into the `args` array.
1902
417
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
417
                    callee_vmctx: *mut VMOpaqueContext,
1904
417
                    caller_vmctx: *mut VMContext,
1905
417
                    ptr: *const VMFunctionBody,
1906
417
                    args: *mut ValRaw,
1907
417
                )
1908
417
                where
1909
417
                    $($args: WasmTy,)*
1910
417
                    R: WasmRet,
1911
417
                {
1912
417
                    let ptr = mem::transmute::<
1913
417
                        *const VMFunctionBody,
1914
417
                        unsafe extern "C" fn(
1915
417
                            *mut VMOpaqueContext,
1916
417
                            *mut VMContext,
1917
417
                            $( $args::Abi, )*
1918
417
                            R::Retptr,
1919
417
                        ) -> R::Abi,
1920
417
                    >(ptr);
1921
417
1922
417
                    let mut _n = 0;
1923
417
                    $(
1924
417
                        let $args = $args::abi_from_raw(args.add(_n));
1925
417
                        _n += 1;
1926
417
                    )*
1927
417
                    R::wrap_trampoline(args, |retptr| {
1928
417
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
417
                    });
1930
417
                }
1931
417
1932
417
                let ty = R::func_type(
1933
417
                    None::<ValType>.into_iter()
1934
417
                        $(.chain(Some($args::valtype())))*
1935
417
                );
1936
417
1937
417
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
417
1939
417
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
417
1941
417
                let ctx = unsafe {
1942
417
                    VMHostFuncContext::new(
1943
417
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
417
                        shared_signature_id,
1945
417
                        Box::new(self),
1946
417
                    )
1947
417
                };
1948
417
1949
417
                (ctx, shared_signature_id, trampoline)
1950
417
            }
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::next_actor_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_read<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
417
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
417
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
417
                /// calls the wrapped host function, and returns the translated
1807
417
                /// result back to Wasm.
1808
417
                ///
1809
417
                /// Note that this shim's ABI must *exactly* match that expected
1810
417
                /// by Cranelift, since Cranelift is generating raw function
1811
417
                /// calls directly to this function.
1812
417
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
417
                    vmctx: *mut VMOpaqueContext,
1814
417
                    caller_vmctx: *mut VMContext,
1815
417
                    $( $args: $args::Abi, )*
1816
417
                    retptr: R::Retptr,
1817
417
                ) -> R::Abi
1818
417
                where
1819
417
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
417
                    $( $args: WasmTy, )*
1821
417
                    R: WasmRet,
1822
417
                {
1823
417
                    enum CallResult<U> {
1824
417
                        Ok(U),
1825
417
                        Trap(anyhow::Error),
1826
417
                        Panic(Box<dyn std::any::Any + Send>),
1827
417
                    }
1828
417
1829
417
                    // Note that this `result` is intentionally scoped into a
1830
417
                    // separate block. Handling traps and panics will involve
1831
417
                    // longjmp-ing from this function which means we won't run
1832
417
                    // destructors. As a result anything requiring a destructor
1833
417
                    // should be part of this block, and the long-jmp-ing
1834
417
                    // happens after the block in handling `CallResult`.
1835
417
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
417
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
417
                        let state = (*vmctx).host_state();
1838
417
1839
417
                        // Double-check ourselves in debug mode, but we control
1840
417
                        // the `Any` here so an unsafe downcast should also
1841
417
                        // work.
1842
417
                        debug_assert!(state.is::<F>());
1843
417
                        let func = &*(state as *const _ as *const F);
1844
417
1845
417
                        let ret = {
1846
417
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
417
                                    return R::fallible_from_trap(trap);
1849
417
                                }
1850
417
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
417
                                let r = func(
1852
417
                                    caller.sub_caller(),
1853
417
                                    $( $args, )*
1854
417
                                );
1855
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
417
                                    return R::fallible_from_trap(trap);
1857
417
                                }
1858
417
                                r.into_fallible()
1859
417
                            }))
1860
417
                        };
1861
417
1862
417
                        // Note that we need to be careful when dealing with traps
1863
417
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
417
                        // that it's not unwinding and consequently no Rust
1865
417
                        // destructors are run. We need to be careful to ensure that
1866
417
                        // nothing on the stack needs a destructor when we exit
1867
417
                        // abnormally from this `match`, e.g. on `Err`, on
1868
417
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
417
                        match ret {
1870
417
                            Err(panic) => CallResult::Panic(panic),
1871
417
                            Ok(ret) => {
1872
417
                                // Because the wrapped function is not `unsafe`, we
1873
417
                                // can't assume it returned a value that is
1874
417
                                // compatible with this store.
1875
417
                                if !ret.compatible_with_store(caller.store.0) {
1876
417
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
417
                                } else {
1878
417
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
417
                                        Ok(val) => CallResult::Ok(val),
1880
417
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
417
                                    }
1882
417
                                }
1883
417
1884
417
                            }
1885
417
                        }
1886
417
                    });
1887
417
1888
417
                    match result {
1889
417
                        CallResult::Ok(val) => val,
1890
417
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
417
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
417
                    }
1893
417
                }
1894
417
1895
417
                /// This trampoline allows host code to indirectly call the
1896
417
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
417
                /// happens to reference our wrapped function).
1898
417
                ///
1899
417
                /// It reads the arguments out of the incoming `args` array,
1900
417
                /// calls the given function pointer, and then stores the result
1901
417
                /// back into the `args` array.
1902
417
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
417
                    callee_vmctx: *mut VMOpaqueContext,
1904
417
                    caller_vmctx: *mut VMContext,
1905
417
                    ptr: *const VMFunctionBody,
1906
417
                    args: *mut ValRaw,
1907
417
                )
1908
417
                where
1909
417
                    $($args: WasmTy,)*
1910
417
                    R: WasmRet,
1911
417
                {
1912
417
                    let ptr = mem::transmute::<
1913
417
                        *const VMFunctionBody,
1914
417
                        unsafe extern "C" fn(
1915
417
                            *mut VMOpaqueContext,
1916
417
                            *mut VMContext,
1917
417
                            $( $args::Abi, )*
1918
417
                            R::Retptr,
1919
417
                        ) -> R::Abi,
1920
417
                    >(ptr);
1921
417
1922
417
                    let mut _n = 0;
1923
417
                    $(
1924
417
                        let $args = $args::abi_from_raw(args.add(_n));
1925
417
                        _n += 1;
1926
417
                    )*
1927
417
                    R::wrap_trampoline(args, |retptr| {
1928
417
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
417
                    });
1930
417
                }
1931
417
1932
417
                let ty = R::func_type(
1933
417
                    None::<ValType>.into_iter()
1934
417
                        $(.chain(Some($args::valtype())))*
1935
417
                );
1936
417
1937
417
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
417
1939
417
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
417
1941
417
                let ctx = unsafe {
1942
417
                    VMHostFuncContext::new(
1943
417
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
417
                        shared_signature_id,
1945
417
                        Box::new(self),
1946
417
                    )
1947
417
                };
1948
417
1949
417
                (ctx, shared_signature_id, trampoline)
1950
417
            }
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::store_artifact<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
417
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
417
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
417
                /// calls the wrapped host function, and returns the translated
1807
417
                /// result back to Wasm.
1808
417
                ///
1809
417
                /// Note that this shim's ABI must *exactly* match that expected
1810
417
                /// by Cranelift, since Cranelift is generating raw function
1811
417
                /// calls directly to this function.
1812
417
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
417
                    vmctx: *mut VMOpaqueContext,
1814
417
                    caller_vmctx: *mut VMContext,
1815
417
                    $( $args: $args::Abi, )*
1816
417
                    retptr: R::Retptr,
1817
417
                ) -> R::Abi
1818
417
                where
1819
417
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
417
                    $( $args: WasmTy, )*
1821
417
                    R: WasmRet,
1822
417
                {
1823
417
                    enum CallResult<U> {
1824
417
                        Ok(U),
1825
417
                        Trap(anyhow::Error),
1826
417
                        Panic(Box<dyn std::any::Any + Send>),
1827
417
                    }
1828
417
1829
417
                    // Note that this `result` is intentionally scoped into a
1830
417
                    // separate block. Handling traps and panics will involve
1831
417
                    // longjmp-ing from this function which means we won't run
1832
417
                    // destructors. As a result anything requiring a destructor
1833
417
                    // should be part of this block, and the long-jmp-ing
1834
417
                    // happens after the block in handling `CallResult`.
1835
417
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
417
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
417
                        let state = (*vmctx).host_state();
1838
417
1839
417
                        // Double-check ourselves in debug mode, but we control
1840
417
                        // the `Any` here so an unsafe downcast should also
1841
417
                        // work.
1842
417
                        debug_assert!(state.is::<F>());
1843
417
                        let func = &*(state as *const _ as *const F);
1844
417
1845
417
                        let ret = {
1846
417
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
417
                                    return R::fallible_from_trap(trap);
1849
417
                                }
1850
417
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
417
                                let r = func(
1852
417
                                    caller.sub_caller(),
1853
417
                                    $( $args, )*
1854
417
                                );
1855
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
417
                                    return R::fallible_from_trap(trap);
1857
417
                                }
1858
417
                                r.into_fallible()
1859
417
                            }))
1860
417
                        };
1861
417
1862
417
                        // Note that we need to be careful when dealing with traps
1863
417
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
417
                        // that it's not unwinding and consequently no Rust
1865
417
                        // destructors are run. We need to be careful to ensure that
1866
417
                        // nothing on the stack needs a destructor when we exit
1867
417
                        // abnormally from this `match`, e.g. on `Err`, on
1868
417
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
417
                        match ret {
1870
417
                            Err(panic) => CallResult::Panic(panic),
1871
417
                            Ok(ret) => {
1872
417
                                // Because the wrapped function is not `unsafe`, we
1873
417
                                // can't assume it returned a value that is
1874
417
                                // compatible with this store.
1875
417
                                if !ret.compatible_with_store(caller.store.0) {
1876
417
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
417
                                } else {
1878
417
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
417
                                        Ok(val) => CallResult::Ok(val),
1880
417
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
417
                                    }
1882
417
                                }
1883
417
1884
417
                            }
1885
417
                        }
1886
417
                    });
1887
417
1888
417
                    match result {
1889
417
                        CallResult::Ok(val) => val,
1890
417
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
417
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
417
                    }
1893
417
                }
1894
417
1895
417
                /// This trampoline allows host code to indirectly call the
1896
417
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
417
                /// happens to reference our wrapped function).
1898
417
                ///
1899
417
                /// It reads the arguments out of the incoming `args` array,
1900
417
                /// calls the given function pointer, and then stores the result
1901
417
                /// back into the `args` array.
1902
417
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
417
                    callee_vmctx: *mut VMOpaqueContext,
1904
417
                    caller_vmctx: *mut VMContext,
1905
417
                    ptr: *const VMFunctionBody,
1906
417
                    args: *mut ValRaw,
1907
417
                )
1908
417
                where
1909
417
                    $($args: WasmTy,)*
1910
417
                    R: WasmRet,
1911
417
                {
1912
417
                    let ptr = mem::transmute::<
1913
417
                        *const VMFunctionBody,
1914
417
                        unsafe extern "C" fn(
1915
417
                            *mut VMOpaqueContext,
1916
417
                            *mut VMContext,
1917
417
                            $( $args::Abi, )*
1918
417
                            R::Retptr,
1919
417
                        ) -> R::Abi,
1920
417
                    >(ptr);
1921
417
1922
417
                    let mut _n = 0;
1923
417
                    $(
1924
417
                        let $args = $args::abi_from_raw(args.add(_n));
1925
417
                        _n += 1;
1926
417
                    )*
1927
417
                    R::wrap_trampoline(args, |retptr| {
1928
417
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
417
                    });
1930
417
                }
1931
417
1932
417
                let ty = R::func_type(
1933
417
                    None::<ValType>.into_iter()
1934
417
                        $(.chain(Some($args::valtype())))*
1935
417
                );
1936
417
1937
417
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
417
1939
417
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
417
1941
417
                let ctx = unsafe {
1942
417
                    VMHostFuncContext::new(
1943
417
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
417
                        shared_signature_id,
1945
417
                        Box::new(self),
1946
417
                    )
1947
417
                };
1948
417
1949
417
                (ctx, shared_signature_id, trampoline)
1950
417
            }
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, i64), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::gas::charge_gas<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, i64), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::create_actor<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u64, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
417
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
417
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
417
                /// calls the wrapped host function, and returns the translated
1807
417
                /// result back to Wasm.
1808
417
                ///
1809
417
                /// Note that this shim's ABI must *exactly* match that expected
1810
417
                /// by Cranelift, since Cranelift is generating raw function
1811
417
                /// calls directly to this function.
1812
417
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
417
                    vmctx: *mut VMOpaqueContext,
1814
417
                    caller_vmctx: *mut VMContext,
1815
417
                    $( $args: $args::Abi, )*
1816
417
                    retptr: R::Retptr,
1817
417
                ) -> R::Abi
1818
417
                where
1819
417
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
417
                    $( $args: WasmTy, )*
1821
417
                    R: WasmRet,
1822
417
                {
1823
417
                    enum CallResult<U> {
1824
417
                        Ok(U),
1825
417
                        Trap(anyhow::Error),
1826
417
                        Panic(Box<dyn std::any::Any + Send>),
1827
417
                    }
1828
417
1829
417
                    // Note that this `result` is intentionally scoped into a
1830
417
                    // separate block. Handling traps and panics will involve
1831
417
                    // longjmp-ing from this function which means we won't run
1832
417
                    // destructors. As a result anything requiring a destructor
1833
417
                    // should be part of this block, and the long-jmp-ing
1834
417
                    // happens after the block in handling `CallResult`.
1835
417
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
417
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
417
                        let state = (*vmctx).host_state();
1838
417
1839
417
                        // Double-check ourselves in debug mode, but we control
1840
417
                        // the `Any` here so an unsafe downcast should also
1841
417
                        // work.
1842
417
                        debug_assert!(state.is::<F>());
1843
417
                        let func = &*(state as *const _ as *const F);
1844
417
1845
417
                        let ret = {
1846
417
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
417
                                    return R::fallible_from_trap(trap);
1849
417
                                }
1850
417
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
417
                                let r = func(
1852
417
                                    caller.sub_caller(),
1853
417
                                    $( $args, )*
1854
417
                                );
1855
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
417
                                    return R::fallible_from_trap(trap);
1857
417
                                }
1858
417
                                r.into_fallible()
1859
417
                            }))
1860
417
                        };
1861
417
1862
417
                        // Note that we need to be careful when dealing with traps
1863
417
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
417
                        // that it's not unwinding and consequently no Rust
1865
417
                        // destructors are run. We need to be careful to ensure that
1866
417
                        // nothing on the stack needs a destructor when we exit
1867
417
                        // abnormally from this `match`, e.g. on `Err`, on
1868
417
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
417
                        match ret {
1870
417
                            Err(panic) => CallResult::Panic(panic),
1871
417
                            Ok(ret) => {
1872
417
                                // Because the wrapped function is not `unsafe`, we
1873
417
                                // can't assume it returned a value that is
1874
417
                                // compatible with this store.
1875
417
                                if !ret.compatible_with_store(caller.store.0) {
1876
417
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
417
                                } else {
1878
417
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
417
                                        Ok(val) => CallResult::Ok(val),
1880
417
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
417
                                    }
1882
417
                                }
1883
417
1884
417
                            }
1885
417
                        }
1886
417
                    });
1887
417
1888
417
                    match result {
1889
417
                        CallResult::Ok(val) => val,
1890
417
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
417
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
417
                    }
1893
417
                }
1894
417
1895
417
                /// This trampoline allows host code to indirectly call the
1896
417
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
417
                /// happens to reference our wrapped function).
1898
417
                ///
1899
417
                /// It reads the arguments out of the incoming `args` array,
1900
417
                /// calls the given function pointer, and then stores the result
1901
417
                /// back into the `args` array.
1902
417
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
417
                    callee_vmctx: *mut VMOpaqueContext,
1904
417
                    caller_vmctx: *mut VMContext,
1905
417
                    ptr: *const VMFunctionBody,
1906
417
                    args: *mut ValRaw,
1907
417
                )
1908
417
                where
1909
417
                    $($args: WasmTy,)*
1910
417
                    R: WasmRet,
1911
417
                {
1912
417
                    let ptr = mem::transmute::<
1913
417
                        *const VMFunctionBody,
1914
417
                        unsafe extern "C" fn(
1915
417
                            *mut VMOpaqueContext,
1916
417
                            *mut VMContext,
1917
417
                            $( $args::Abi, )*
1918
417
                            R::Retptr,
1919
417
                        ) -> R::Abi,
1920
417
                    >(ptr);
1921
417
1922
417
                    let mut _n = 0;
1923
417
                    $(
1924
417
                        let $args = $args::abi_from_raw(args.add(_n));
1925
417
                        _n += 1;
1926
417
                    )*
1927
417
                    R::wrap_trampoline(args, |retptr| {
1928
417
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
417
                    });
1930
417
                }
1931
417
1932
417
                let ty = R::func_type(
1933
417
                    None::<ValType>.into_iter()
1934
417
                        $(.chain(Some($args::valtype())))*
1935
417
                );
1936
417
1937
417
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
417
1939
417
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
417
1941
417
                let ctx = unsafe {
1942
417
                    VMHostFuncContext::new(
1943
417
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
417
                        shared_signature_id,
1945
417
                        Box::new(self),
1946
417
                    )
1947
417
                };
1948
417
1949
417
                (ctx, shared_signature_id, trampoline)
1950
417
            }
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_code_cid_for_type<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, i32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_create<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u64, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
417
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
417
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
417
                /// calls the wrapped host function, and returns the translated
1807
417
                /// result back to Wasm.
1808
417
                ///
1809
417
                /// Note that this shim's ABI must *exactly* match that expected
1810
417
                /// by Cranelift, since Cranelift is generating raw function
1811
417
                /// calls directly to this function.
1812
417
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
417
                    vmctx: *mut VMOpaqueContext,
1814
417
                    caller_vmctx: *mut VMContext,
1815
417
                    $( $args: $args::Abi, )*
1816
417
                    retptr: R::Retptr,
1817
417
                ) -> R::Abi
1818
417
                where
1819
417
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
417
                    $( $args: WasmTy, )*
1821
417
                    R: WasmRet,
1822
417
                {
1823
417
                    enum CallResult<U> {
1824
417
                        Ok(U),
1825
417
                        Trap(anyhow::Error),
1826
417
                        Panic(Box<dyn std::any::Any + Send>),
1827
417
                    }
1828
417
1829
417
                    // Note that this `result` is intentionally scoped into a
1830
417
                    // separate block. Handling traps and panics will involve
1831
417
                    // longjmp-ing from this function which means we won't run
1832
417
                    // destructors. As a result anything requiring a destructor
1833
417
                    // should be part of this block, and the long-jmp-ing
1834
417
                    // happens after the block in handling `CallResult`.
1835
417
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
417
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
417
                        let state = (*vmctx).host_state();
1838
417
1839
417
                        // Double-check ourselves in debug mode, but we control
1840
417
                        // the `Any` here so an unsafe downcast should also
1841
417
                        // work.
1842
417
                        debug_assert!(state.is::<F>());
1843
417
                        let func = &*(state as *const _ as *const F);
1844
417
1845
417
                        let ret = {
1846
417
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
417
                                    return R::fallible_from_trap(trap);
1849
417
                                }
1850
417
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
417
                                let r = func(
1852
417
                                    caller.sub_caller(),
1853
417
                                    $( $args, )*
1854
417
                                );
1855
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
417
                                    return R::fallible_from_trap(trap);
1857
417
                                }
1858
417
                                r.into_fallible()
1859
417
                            }))
1860
417
                        };
1861
417
1862
417
                        // Note that we need to be careful when dealing with traps
1863
417
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
417
                        // that it's not unwinding and consequently no Rust
1865
417
                        // destructors are run. We need to be careful to ensure that
1866
417
                        // nothing on the stack needs a destructor when we exit
1867
417
                        // abnormally from this `match`, e.g. on `Err`, on
1868
417
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
417
                        match ret {
1870
417
                            Err(panic) => CallResult::Panic(panic),
1871
417
                            Ok(ret) => {
1872
417
                                // Because the wrapped function is not `unsafe`, we
1873
417
                                // can't assume it returned a value that is
1874
417
                                // compatible with this store.
1875
417
                                if !ret.compatible_with_store(caller.store.0) {
1876
417
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
417
                                } else {
1878
417
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
417
                                        Ok(val) => CallResult::Ok(val),
1880
417
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
417
                                    }
1882
417
                                }
1883
417
1884
417
                            }
1885
417
                        }
1886
417
                    });
1887
417
1888
417
                    match result {
1889
417
                        CallResult::Ok(val) => val,
1890
417
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
417
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
417
                    }
1893
417
                }
1894
417
1895
417
                /// This trampoline allows host code to indirectly call the
1896
417
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
417
                /// happens to reference our wrapped function).
1898
417
                ///
1899
417
                /// It reads the arguments out of the incoming `args` array,
1900
417
                /// calls the given function pointer, and then stores the result
1901
417
                /// back into the `args` array.
1902
417
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
417
                    callee_vmctx: *mut VMOpaqueContext,
1904
417
                    caller_vmctx: *mut VMContext,
1905
417
                    ptr: *const VMFunctionBody,
1906
417
                    args: *mut ValRaw,
1907
417
                )
1908
417
                where
1909
417
                    $($args: WasmTy,)*
1910
417
                    R: WasmRet,
1911
417
                {
1912
417
                    let ptr = mem::transmute::<
1913
417
                        *const VMFunctionBody,
1914
417
                        unsafe extern "C" fn(
1915
417
                            *mut VMOpaqueContext,
1916
417
                            *mut VMContext,
1917
417
                            $( $args::Abi, )*
1918
417
                            R::Retptr,
1919
417
                        ) -> R::Abi,
1920
417
                    >(ptr);
1921
417
1922
417
                    let mut _n = 0;
1923
417
                    $(
1924
417
                        let $args = $args::abi_from_raw(args.add(_n));
1925
417
                        _n += 1;
1926
417
                    )*
1927
417
                    R::wrap_trampoline(args, |retptr| {
1928
417
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
417
                    });
1930
417
                }
1931
417
1932
417
                let ty = R::func_type(
1933
417
                    None::<ValType>.into_iter()
1934
417
                        $(.chain(Some($args::valtype())))*
1935
417
                );
1936
417
1937
417
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
417
1939
417
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
417
1941
417
                let ctx = unsafe {
1942
417
                    VMHostFuncContext::new(
1943
417
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
417
                        shared_signature_id,
1945
417
                        Box::new(self),
1946
417
                    )
1947
417
                };
1948
417
1949
417
                (ctx, shared_signature_id, trampoline)
1950
417
            }
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_post<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::hash<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u64, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
417
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
417
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
417
                /// calls the wrapped host function, and returns the translated
1807
417
                /// result back to Wasm.
1808
417
                ///
1809
417
                /// Note that this shim's ABI must *exactly* match that expected
1810
417
                /// by Cranelift, since Cranelift is generating raw function
1811
417
                /// calls directly to this function.
1812
417
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
417
                    vmctx: *mut VMOpaqueContext,
1814
417
                    caller_vmctx: *mut VMContext,
1815
417
                    $( $args: $args::Abi, )*
1816
417
                    retptr: R::Retptr,
1817
417
                ) -> R::Abi
1818
417
                where
1819
417
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
417
                    $( $args: WasmTy, )*
1821
417
                    R: WasmRet,
1822
417
                {
1823
417
                    enum CallResult<U> {
1824
417
                        Ok(U),
1825
417
                        Trap(anyhow::Error),
1826
417
                        Panic(Box<dyn std::any::Any + Send>),
1827
417
                    }
1828
417
1829
417
                    // Note that this `result` is intentionally scoped into a
1830
417
                    // separate block. Handling traps and panics will involve
1831
417
                    // longjmp-ing from this function which means we won't run
1832
417
                    // destructors. As a result anything requiring a destructor
1833
417
                    // should be part of this block, and the long-jmp-ing
1834
417
                    // happens after the block in handling `CallResult`.
1835
417
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
417
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
417
                        let state = (*vmctx).host_state();
1838
417
1839
417
                        // Double-check ourselves in debug mode, but we control
1840
417
                        // the `Any` here so an unsafe downcast should also
1841
417
                        // work.
1842
417
                        debug_assert!(state.is::<F>());
1843
417
                        let func = &*(state as *const _ as *const F);
1844
417
1845
417
                        let ret = {
1846
417
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
417
                                    return R::fallible_from_trap(trap);
1849
417
                                }
1850
417
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
417
                                let r = func(
1852
417
                                    caller.sub_caller(),
1853
417
                                    $( $args, )*
1854
417
                                );
1855
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
417
                                    return R::fallible_from_trap(trap);
1857
417
                                }
1858
417
                                r.into_fallible()
1859
417
                            }))
1860
417
                        };
1861
417
1862
417
                        // Note that we need to be careful when dealing with traps
1863
417
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
417
                        // that it's not unwinding and consequently no Rust
1865
417
                        // destructors are run. We need to be careful to ensure that
1866
417
                        // nothing on the stack needs a destructor when we exit
1867
417
                        // abnormally from this `match`, e.g. on `Err`, on
1868
417
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
417
                        match ret {
1870
417
                            Err(panic) => CallResult::Panic(panic),
1871
417
                            Ok(ret) => {
1872
417
                                // Because the wrapped function is not `unsafe`, we
1873
417
                                // can't assume it returned a value that is
1874
417
                                // compatible with this store.
1875
417
                                if !ret.compatible_with_store(caller.store.0) {
1876
417
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
417
                                } else {
1878
417
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
417
                                        Ok(val) => CallResult::Ok(val),
1880
417
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
417
                                    }
1882
417
                                }
1883
417
1884
417
                            }
1885
417
                        }
1886
417
                    });
1887
417
1888
417
                    match result {
1889
417
                        CallResult::Ok(val) => val,
1890
417
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
417
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
417
                    }
1893
417
                }
1894
417
1895
417
                /// This trampoline allows host code to indirectly call the
1896
417
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
417
                /// happens to reference our wrapped function).
1898
417
                ///
1899
417
                /// It reads the arguments out of the incoming `args` array,
1900
417
                /// calls the given function pointer, and then stores the result
1901
417
                /// back into the `args` array.
1902
417
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
417
                    callee_vmctx: *mut VMOpaqueContext,
1904
417
                    caller_vmctx: *mut VMContext,
1905
417
                    ptr: *const VMFunctionBody,
1906
417
                    args: *mut ValRaw,
1907
417
                )
1908
417
                where
1909
417
                    $($args: WasmTy,)*
1910
417
                    R: WasmRet,
1911
417
                {
1912
417
                    let ptr = mem::transmute::<
1913
417
                        *const VMFunctionBody,
1914
417
                        unsafe extern "C" fn(
1915
417
                            *mut VMOpaqueContext,
1916
417
                            *mut VMContext,
1917
417
                            $( $args::Abi, )*
1918
417
                            R::Retptr,
1919
417
                        ) -> R::Abi,
1920
417
                    >(ptr);
1921
417
1922
417
                    let mut _n = 0;
1923
417
                    $(
1924
417
                        let $args = $args::abi_from_raw(args.add(_n));
1925
417
                        _n += 1;
1926
417
                    )*
1927
417
                    R::wrap_trampoline(args, |retptr| {
1928
417
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
417
                    });
1930
417
                }
1931
417
1932
417
                let ty = R::func_type(
1933
417
                    None::<ValType>.into_iter()
1934
417
                        $(.chain(Some($args::valtype())))*
1935
417
                );
1936
417
1937
417
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
417
1939
417
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
417
1941
417
                let ctx = unsafe {
1942
417
                    VMHostFuncContext::new(
1943
417
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
417
                        shared_signature_id,
1945
417
                        Box::new(self),
1946
417
                    )
1947
417
                };
1948
417
1949
417
                (ctx, shared_signature_id, trampoline)
1950
417
            }
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, u32, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::compute_unsealed_sector_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, i64, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<fvm::syscalls::vm::Never, fvm::syscalls::error::Abort>, fvm::syscalls::vm::exit<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
417
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
417
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
417
                /// calls the wrapped host function, and returns the translated
1807
417
                /// result back to Wasm.
1808
417
                ///
1809
417
                /// Note that this shim's ABI must *exactly* match that expected
1810
417
                /// by Cranelift, since Cranelift is generating raw function
1811
417
                /// calls directly to this function.
1812
417
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
417
                    vmctx: *mut VMOpaqueContext,
1814
417
                    caller_vmctx: *mut VMContext,
1815
417
                    $( $args: $args::Abi, )*
1816
417
                    retptr: R::Retptr,
1817
417
                ) -> R::Abi
1818
417
                where
1819
417
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
417
                    $( $args: WasmTy, )*
1821
417
                    R: WasmRet,
1822
417
                {
1823
417
                    enum CallResult<U> {
1824
417
                        Ok(U),
1825
417
                        Trap(anyhow::Error),
1826
417
                        Panic(Box<dyn std::any::Any + Send>),
1827
417
                    }
1828
417
1829
417
                    // Note that this `result` is intentionally scoped into a
1830
417
                    // separate block. Handling traps and panics will involve
1831
417
                    // longjmp-ing from this function which means we won't run
1832
417
                    // destructors. As a result anything requiring a destructor
1833
417
                    // should be part of this block, and the long-jmp-ing
1834
417
                    // happens after the block in handling `CallResult`.
1835
417
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
417
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
417
                        let state = (*vmctx).host_state();
1838
417
1839
417
                        // Double-check ourselves in debug mode, but we control
1840
417
                        // the `Any` here so an unsafe downcast should also
1841
417
                        // work.
1842
417
                        debug_assert!(state.is::<F>());
1843
417
                        let func = &*(state as *const _ as *const F);
1844
417
1845
417
                        let ret = {
1846
417
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
417
                                    return R::fallible_from_trap(trap);
1849
417
                                }
1850
417
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
417
                                let r = func(
1852
417
                                    caller.sub_caller(),
1853
417
                                    $( $args, )*
1854
417
                                );
1855
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
417
                                    return R::fallible_from_trap(trap);
1857
417
                                }
1858
417
                                r.into_fallible()
1859
417
                            }))
1860
417
                        };
1861
417
1862
417
                        // Note that we need to be careful when dealing with traps
1863
417
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
417
                        // that it's not unwinding and consequently no Rust
1865
417
                        // destructors are run. We need to be careful to ensure that
1866
417
                        // nothing on the stack needs a destructor when we exit
1867
417
                        // abnormally from this `match`, e.g. on `Err`, on
1868
417
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
417
                        match ret {
1870
417
                            Err(panic) => CallResult::Panic(panic),
1871
417
                            Ok(ret) => {
1872
417
                                // Because the wrapped function is not `unsafe`, we
1873
417
                                // can't assume it returned a value that is
1874
417
                                // compatible with this store.
1875
417
                                if !ret.compatible_with_store(caller.store.0) {
1876
417
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
417
                                } else {
1878
417
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
417
                                        Ok(val) => CallResult::Ok(val),
1880
417
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
417
                                    }
1882
417
                                }
1883
417
1884
417
                            }
1885
417
                        }
1886
417
                    });
1887
417
1888
417
                    match result {
1889
417
                        CallResult::Ok(val) => val,
1890
417
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
417
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
417
                    }
1893
417
                }
1894
417
1895
417
                /// This trampoline allows host code to indirectly call the
1896
417
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
417
                /// happens to reference our wrapped function).
1898
417
                ///
1899
417
                /// It reads the arguments out of the incoming `args` array,
1900
417
                /// calls the given function pointer, and then stores the result
1901
417
                /// back into the `args` array.
1902
417
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
417
                    callee_vmctx: *mut VMOpaqueContext,
1904
417
                    caller_vmctx: *mut VMContext,
1905
417
                    ptr: *const VMFunctionBody,
1906
417
                    args: *mut ValRaw,
1907
417
                )
1908
417
                where
1909
417
                    $($args: WasmTy,)*
1910
417
                    R: WasmRet,
1911
417
                {
1912
417
                    let ptr = mem::transmute::<
1913
417
                        *const VMFunctionBody,
1914
417
                        unsafe extern "C" fn(
1915
417
                            *mut VMOpaqueContext,
1916
417
                            *mut VMContext,
1917
417
                            $( $args::Abi, )*
1918
417
                            R::Retptr,
1919
417
                        ) -> R::Abi,
1920
417
                    >(ptr);
1921
417
1922
417
                    let mut _n = 0;
1923
417
                    $(
1924
417
                        let $args = $args::abi_from_raw(args.add(_n));
1925
417
                        _n += 1;
1926
417
                    )*
1927
417
                    R::wrap_trampoline(args, |retptr| {
1928
417
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
417
                    });
1930
417
                }
1931
417
1932
417
                let ty = R::func_type(
1933
417
                    None::<ValType>.into_iter()
1934
417
                        $(.chain(Some($args::valtype())))*
1935
417
                );
1936
417
1937
417
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
417
1939
417
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
417
1941
417
                let ctx = unsafe {
1942
417
                    VMHostFuncContext::new(
1943
417
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
417
                        shared_signature_id,
1945
417
                        Box::new(self),
1946
417
                    )
1947
417
                };
1948
417
1949
417
                (ctx, shared_signature_id, trampoline)
1950
417
            }
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::out::network::NetworkContext, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::context<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>,), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_create<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u64, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_replica_update<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
417
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
417
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
417
                /// calls the wrapped host function, and returns the translated
1807
417
                /// result back to Wasm.
1808
417
                ///
1809
417
                /// Note that this shim's ABI must *exactly* match that expected
1810
417
                /// by Cranelift, since Cranelift is generating raw function
1811
417
                /// calls directly to this function.
1812
417
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
417
                    vmctx: *mut VMOpaqueContext,
1814
417
                    caller_vmctx: *mut VMContext,
1815
417
                    $( $args: $args::Abi, )*
1816
417
                    retptr: R::Retptr,
1817
417
                ) -> R::Abi
1818
417
                where
1819
417
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
417
                    $( $args: WasmTy, )*
1821
417
                    R: WasmRet,
1822
417
                {
1823
417
                    enum CallResult<U> {
1824
417
                        Ok(U),
1825
417
                        Trap(anyhow::Error),
1826
417
                        Panic(Box<dyn std::any::Any + Send>),
1827
417
                    }
1828
417
1829
417
                    // Note that this `result` is intentionally scoped into a
1830
417
                    // separate block. Handling traps and panics will involve
1831
417
                    // longjmp-ing from this function which means we won't run
1832
417
                    // destructors. As a result anything requiring a destructor
1833
417
                    // should be part of this block, and the long-jmp-ing
1834
417
                    // happens after the block in handling `CallResult`.
1835
417
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
417
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
417
                        let state = (*vmctx).host_state();
1838
417
1839
417
                        // Double-check ourselves in debug mode, but we control
1840
417
                        // the `Any` here so an unsafe downcast should also
1841
417
                        // work.
1842
417
                        debug_assert!(state.is::<F>());
1843
417
                        let func = &*(state as *const _ as *const F);
1844
417
1845
417
                        let ret = {
1846
417
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
417
                                    return R::fallible_from_trap(trap);
1849
417
                                }
1850
417
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
417
                                let r = func(
1852
417
                                    caller.sub_caller(),
1853
417
                                    $( $args, )*
1854
417
                                );
1855
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
417
                                    return R::fallible_from_trap(trap);
1857
417
                                }
1858
417
                                r.into_fallible()
1859
417
                            }))
1860
417
                        };
1861
417
1862
417
                        // Note that we need to be careful when dealing with traps
1863
417
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
417
                        // that it's not unwinding and consequently no Rust
1865
417
                        // destructors are run. We need to be careful to ensure that
1866
417
                        // nothing on the stack needs a destructor when we exit
1867
417
                        // abnormally from this `match`, e.g. on `Err`, on
1868
417
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
417
                        match ret {
1870
417
                            Err(panic) => CallResult::Panic(panic),
1871
417
                            Ok(ret) => {
1872
417
                                // Because the wrapped function is not `unsafe`, we
1873
417
                                // can't assume it returned a value that is
1874
417
                                // compatible with this store.
1875
417
                                if !ret.compatible_with_store(caller.store.0) {
1876
417
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
417
                                } else {
1878
417
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
417
                                        Ok(val) => CallResult::Ok(val),
1880
417
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
417
                                    }
1882
417
                                }
1883
417
1884
417
                            }
1885
417
                        }
1886
417
                    });
1887
417
1888
417
                    match result {
1889
417
                        CallResult::Ok(val) => val,
1890
417
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
417
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
417
                    }
1893
417
                }
1894
417
1895
417
                /// This trampoline allows host code to indirectly call the
1896
417
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
417
                /// happens to reference our wrapped function).
1898
417
                ///
1899
417
                /// It reads the arguments out of the incoming `args` array,
1900
417
                /// calls the given function pointer, and then stores the result
1901
417
                /// back into the `args` array.
1902
417
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
417
                    callee_vmctx: *mut VMOpaqueContext,
1904
417
                    caller_vmctx: *mut VMContext,
1905
417
                    ptr: *const VMFunctionBody,
1906
417
                    args: *mut ValRaw,
1907
417
                )
1908
417
                where
1909
417
                    $($args: WasmTy,)*
1910
417
                    R: WasmRet,
1911
417
                {
1912
417
                    let ptr = mem::transmute::<
1913
417
                        *const VMFunctionBody,
1914
417
                        unsafe extern "C" fn(
1915
417
                            *mut VMOpaqueContext,
1916
417
                            *mut VMContext,
1917
417
                            $( $args::Abi, )*
1918
417
                            R::Retptr,
1919
417
                        ) -> R::Abi,
1920
417
                    >(ptr);
1921
417
1922
417
                    let mut _n = 0;
1923
417
                    $(
1924
417
                        let $args = $args::abi_from_raw(args.add(_n));
1925
417
                        _n += 1;
1926
417
                    )*
1927
417
                    R::wrap_trampoline(args, |retptr| {
1928
417
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
417
                    });
1930
417
                }
1931
417
1932
417
                let ty = R::func_type(
1933
417
                    None::<ValType>.into_iter()
1934
417
                        $(.chain(Some($args::valtype())))*
1935
417
                );
1936
417
1937
417
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
417
1939
417
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
417
1941
417
                let ctx = unsafe {
1942
417
                    VMHostFuncContext::new(
1943
417
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
417
                        shared_signature_id,
1945
417
                        Box::new(self),
1946
417
                    )
1947
417
                };
1948
417
1949
417
                (ctx, shared_signature_id, trampoline)
1950
417
            }
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::lookup_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u64, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::set_root<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, i64), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::gas::charge_gas<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, i64), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
417
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
417
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
417
                /// calls the wrapped host function, and returns the translated
1807
417
                /// result back to Wasm.
1808
417
                ///
1809
417
                /// Note that this shim's ABI must *exactly* match that expected
1810
417
                /// by Cranelift, since Cranelift is generating raw function
1811
417
                /// calls directly to this function.
1812
417
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
417
                    vmctx: *mut VMOpaqueContext,
1814
417
                    caller_vmctx: *mut VMContext,
1815
417
                    $( $args: $args::Abi, )*
1816
417
                    retptr: R::Retptr,
1817
417
                ) -> R::Abi
1818
417
                where
1819
417
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
417
                    $( $args: WasmTy, )*
1821
417
                    R: WasmRet,
1822
417
                {
1823
417
                    enum CallResult<U> {
1824
417
                        Ok(U),
1825
417
                        Trap(anyhow::Error),
1826
417
                        Panic(Box<dyn std::any::Any + Send>),
1827
417
                    }
1828
417
1829
417
                    // Note that this `result` is intentionally scoped into a
1830
417
                    // separate block. Handling traps and panics will involve
1831
417
                    // longjmp-ing from this function which means we won't run
1832
417
                    // destructors. As a result anything requiring a destructor
1833
417
                    // should be part of this block, and the long-jmp-ing
1834
417
                    // happens after the block in handling `CallResult`.
1835
417
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
417
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
417
                        let state = (*vmctx).host_state();
1838
417
1839
417
                        // Double-check ourselves in debug mode, but we control
1840
417
                        // the `Any` here so an unsafe downcast should also
1841
417
                        // work.
1842
417
                        debug_assert!(state.is::<F>());
1843
417
                        let func = &*(state as *const _ as *const F);
1844
417
1845
417
                        let ret = {
1846
417
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
417
                                    return R::fallible_from_trap(trap);
1849
417
                                }
1850
417
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
417
                                let r = func(
1852
417
                                    caller.sub_caller(),
1853
417
                                    $( $args, )*
1854
417
                                );
1855
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
417
                                    return R::fallible_from_trap(trap);
1857
417
                                }
1858
417
                                r.into_fallible()
1859
417
                            }))
1860
417
                        };
1861
417
1862
417
                        // Note that we need to be careful when dealing with traps
1863
417
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
417
                        // that it's not unwinding and consequently no Rust
1865
417
                        // destructors are run. We need to be careful to ensure that
1866
417
                        // nothing on the stack needs a destructor when we exit
1867
417
                        // abnormally from this `match`, e.g. on `Err`, on
1868
417
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
417
                        match ret {
1870
417
                            Err(panic) => CallResult::Panic(panic),
1871
417
                            Ok(ret) => {
1872
417
                                // Because the wrapped function is not `unsafe`, we
1873
417
                                // can't assume it returned a value that is
1874
417
                                // compatible with this store.
1875
417
                                if !ret.compatible_with_store(caller.store.0) {
1876
417
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
417
                                } else {
1878
417
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
417
                                        Ok(val) => CallResult::Ok(val),
1880
417
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
417
                                    }
1882
417
                                }
1883
417
1884
417
                            }
1885
417
                        }
1886
417
                    });
1887
417
1888
417
                    match result {
1889
417
                        CallResult::Ok(val) => val,
1890
417
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
417
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
417
                    }
1893
417
                }
1894
417
1895
417
                /// This trampoline allows host code to indirectly call the
1896
417
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
417
                /// happens to reference our wrapped function).
1898
417
                ///
1899
417
                /// It reads the arguments out of the incoming `args` array,
1900
417
                /// calls the given function pointer, and then stores the result
1901
417
                /// back into the `args` array.
1902
417
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
417
                    callee_vmctx: *mut VMOpaqueContext,
1904
417
                    caller_vmctx: *mut VMContext,
1905
417
                    ptr: *const VMFunctionBody,
1906
417
                    args: *mut ValRaw,
1907
417
                )
1908
417
                where
1909
417
                    $($args: WasmTy,)*
1910
417
                    R: WasmRet,
1911
417
                {
1912
417
                    let ptr = mem::transmute::<
1913
417
                        *const VMFunctionBody,
1914
417
                        unsafe extern "C" fn(
1915
417
                            *mut VMOpaqueContext,
1916
417
                            *mut VMContext,
1917
417
                            $( $args::Abi, )*
1918
417
                            R::Retptr,
1919
417
                        ) -> R::Abi,
1920
417
                    >(ptr);
1921
417
1922
417
                    let mut _n = 0;
1923
417
                    $(
1924
417
                        let $args = $args::abi_from_raw(args.add(_n));
1925
417
                        _n += 1;
1926
417
                    )*
1927
417
                    R::wrap_trampoline(args, |retptr| {
1928
417
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
417
                    });
1930
417
                }
1931
417
1932
417
                let ty = R::func_type(
1933
417
                    None::<ValType>.into_iter()
1934
417
                        $(.chain(Some($args::valtype())))*
1935
417
                );
1936
417
1937
417
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
417
1939
417
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
417
1941
417
                let ctx = unsafe {
1942
417
                    VMHostFuncContext::new(
1943
417
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
417
                        shared_signature_id,
1945
417
                        Box::new(self),
1946
417
                    )
1947
417
                };
1948
417
1949
417
                (ctx, shared_signature_id, trampoline)
1950
417
            }
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32, u32, u32), core::result::Result<fvm_shared::sys::out::crypto::VerifyConsensusFault, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_consensus_fault<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
417
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
417
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
417
                /// calls the wrapped host function, and returns the translated
1807
417
                /// result back to Wasm.
1808
417
                ///
1809
417
                /// Note that this shim's ABI must *exactly* match that expected
1810
417
                /// by Cranelift, since Cranelift is generating raw function
1811
417
                /// calls directly to this function.
1812
417
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
417
                    vmctx: *mut VMOpaqueContext,
1814
417
                    caller_vmctx: *mut VMContext,
1815
417
                    $( $args: $args::Abi, )*
1816
417
                    retptr: R::Retptr,
1817
417
                ) -> R::Abi
1818
417
                where
1819
417
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
417
                    $( $args: WasmTy, )*
1821
417
                    R: WasmRet,
1822
417
                {
1823
417
                    enum CallResult<U> {
1824
417
                        Ok(U),
1825
417
                        Trap(anyhow::Error),
1826
417
                        Panic(Box<dyn std::any::Any + Send>),
1827
417
                    }
1828
417
1829
417
                    // Note that this `result` is intentionally scoped into a
1830
417
                    // separate block. Handling traps and panics will involve
1831
417
                    // longjmp-ing from this function which means we won't run
1832
417
                    // destructors. As a result anything requiring a destructor
1833
417
                    // should be part of this block, and the long-jmp-ing
1834
417
                    // happens after the block in handling `CallResult`.
1835
417
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
417
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
417
                        let state = (*vmctx).host_state();
1838
417
1839
417
                        // Double-check ourselves in debug mode, but we control
1840
417
                        // the `Any` here so an unsafe downcast should also
1841
417
                        // work.
1842
417
                        debug_assert!(state.is::<F>());
1843
417
                        let func = &*(state as *const _ as *const F);
1844
417
1845
417
                        let ret = {
1846
417
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
417
                                    return R::fallible_from_trap(trap);
1849
417
                                }
1850
417
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
417
                                let r = func(
1852
417
                                    caller.sub_caller(),
1853
417
                                    $( $args, )*
1854
417
                                );
1855
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
417
                                    return R::fallible_from_trap(trap);
1857
417
                                }
1858
417
                                r.into_fallible()
1859
417
                            }))
1860
417
                        };
1861
417
1862
417
                        // Note that we need to be careful when dealing with traps
1863
417
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
417
                        // that it's not unwinding and consequently no Rust
1865
417
                        // destructors are run. We need to be careful to ensure that
1866
417
                        // nothing on the stack needs a destructor when we exit
1867
417
                        // abnormally from this `match`, e.g. on `Err`, on
1868
417
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
417
                        match ret {
1870
417
                            Err(panic) => CallResult::Panic(panic),
1871
417
                            Ok(ret) => {
1872
417
                                // Because the wrapped function is not `unsafe`, we
1873
417
                                // can't assume it returned a value that is
1874
417
                                // compatible with this store.
1875
417
                                if !ret.compatible_with_store(caller.store.0) {
1876
417
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
417
                                } else {
1878
417
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
417
                                        Ok(val) => CallResult::Ok(val),
1880
417
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
417
                                    }
1882
417
                                }
1883
417
1884
417
                            }
1885
417
                        }
1886
417
                    });
1887
417
1888
417
                    match result {
1889
417
                        CallResult::Ok(val) => val,
1890
417
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
417
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
417
                    }
1893
417
                }
1894
417
1895
417
                /// This trampoline allows host code to indirectly call the
1896
417
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
417
                /// happens to reference our wrapped function).
1898
417
                ///
1899
417
                /// It reads the arguments out of the incoming `args` array,
1900
417
                /// calls the given function pointer, and then stores the result
1901
417
                /// back into the `args` array.
1902
417
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
417
                    callee_vmctx: *mut VMOpaqueContext,
1904
417
                    caller_vmctx: *mut VMContext,
1905
417
                    ptr: *const VMFunctionBody,
1906
417
                    args: *mut ValRaw,
1907
417
                )
1908
417
                where
1909
417
                    $($args: WasmTy,)*
1910
417
                    R: WasmRet,
1911
417
                {
1912
417
                    let ptr = mem::transmute::<
1913
417
                        *const VMFunctionBody,
1914
417
                        unsafe extern "C" fn(
1915
417
                            *mut VMOpaqueContext,
1916
417
                            *mut VMContext,
1917
417
                            $( $args::Abi, )*
1918
417
                            R::Retptr,
1919
417
                        ) -> R::Abi,
1920
417
                    >(ptr);
1921
417
1922
417
                    let mut _n = 0;
1923
417
                    $(
1924
417
                        let $args = $args::abi_from_raw(args.add(_n));
1925
417
                        _n += 1;
1926
417
                    )*
1927
417
                    R::wrap_trampoline(args, |retptr| {
1928
417
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
417
                    });
1930
417
                }
1931
417
1932
417
                let ty = R::func_type(
1933
417
                    None::<ValType>.into_iter()
1934
417
                        $(.chain(Some($args::valtype())))*
1935
417
                );
1936
417
1937
417
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
417
1939
417
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
417
1941
417
                let ctx = unsafe {
1942
417
                    VMHostFuncContext::new(
1943
417
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
417
                        shared_signature_id,
1945
417
                        Box::new(self),
1946
417
                    )
1947
417
                };
1948
417
1949
417
                (ctx, shared_signature_id, trampoline)
1950
417
            }
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::log<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
417
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
417
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
417
                /// calls the wrapped host function, and returns the translated
1807
417
                /// result back to Wasm.
1808
417
                ///
1809
417
                /// Note that this shim's ABI must *exactly* match that expected
1810
417
                /// by Cranelift, since Cranelift is generating raw function
1811
417
                /// calls directly to this function.
1812
417
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
417
                    vmctx: *mut VMOpaqueContext,
1814
417
                    caller_vmctx: *mut VMContext,
1815
417
                    $( $args: $args::Abi, )*
1816
417
                    retptr: R::Retptr,
1817
417
                ) -> R::Abi
1818
417
                where
1819
417
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
417
                    $( $args: WasmTy, )*
1821
417
                    R: WasmRet,
1822
417
                {
1823
417
                    enum CallResult<U> {
1824
417
                        Ok(U),
1825
417
                        Trap(anyhow::Error),
1826
417
                        Panic(Box<dyn std::any::Any + Send>),
1827
417
                    }
1828
417
1829
417
                    // Note that this `result` is intentionally scoped into a
1830
417
                    // separate block. Handling traps and panics will involve
1831
417
                    // longjmp-ing from this function which means we won't run
1832
417
                    // destructors. As a result anything requiring a destructor
1833
417
                    // should be part of this block, and the long-jmp-ing
1834
417
                    // happens after the block in handling `CallResult`.
1835
417
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
417
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
417
                        let state = (*vmctx).host_state();
1838
417
1839
417
                        // Double-check ourselves in debug mode, but we control
1840
417
                        // the `Any` here so an unsafe downcast should also
1841
417
                        // work.
1842
417
                        debug_assert!(state.is::<F>());
1843
417
                        let func = &*(state as *const _ as *const F);
1844
417
1845
417
                        let ret = {
1846
417
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
417
                                    return R::fallible_from_trap(trap);
1849
417
                                }
1850
417
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
417
                                let r = func(
1852
417
                                    caller.sub_caller(),
1853
417
                                    $( $args, )*
1854
417
                                );
1855
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
417
                                    return R::fallible_from_trap(trap);
1857
417
                                }
1858
417
                                r.into_fallible()
1859
417
                            }))
1860
417
                        };
1861
417
1862
417
                        // Note that we need to be careful when dealing with traps
1863
417
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
417
                        // that it's not unwinding and consequently no Rust
1865
417
                        // destructors are run. We need to be careful to ensure that
1866
417
                        // nothing on the stack needs a destructor when we exit
1867
417
                        // abnormally from this `match`, e.g. on `Err`, on
1868
417
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
417
                        match ret {
1870
417
                            Err(panic) => CallResult::Panic(panic),
1871
417
                            Ok(ret) => {
1872
417
                                // Because the wrapped function is not `unsafe`, we
1873
417
                                // can't assume it returned a value that is
1874
417
                                // compatible with this store.
1875
417
                                if !ret.compatible_with_store(caller.store.0) {
1876
417
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
417
                                } else {
1878
417
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
417
                                        Ok(val) => CallResult::Ok(val),
1880
417
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
417
                                    }
1882
417
                                }
1883
417
1884
417
                            }
1885
417
                        }
1886
417
                    });
1887
417
1888
417
                    match result {
1889
417
                        CallResult::Ok(val) => val,
1890
417
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
417
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
417
                    }
1893
417
                }
1894
417
1895
417
                /// This trampoline allows host code to indirectly call the
1896
417
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
417
                /// happens to reference our wrapped function).
1898
417
                ///
1899
417
                /// It reads the arguments out of the incoming `args` array,
1900
417
                /// calls the given function pointer, and then stores the result
1901
417
                /// back into the `args` array.
1902
417
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
417
                    callee_vmctx: *mut VMOpaqueContext,
1904
417
                    caller_vmctx: *mut VMContext,
1905
417
                    ptr: *const VMFunctionBody,
1906
417
                    args: *mut ValRaw,
1907
417
                )
1908
417
                where
1909
417
                    $($args: WasmTy,)*
1910
417
                    R: WasmRet,
1911
417
                {
1912
417
                    let ptr = mem::transmute::<
1913
417
                        *const VMFunctionBody,
1914
417
                        unsafe extern "C" fn(
1915
417
                            *mut VMOpaqueContext,
1916
417
                            *mut VMContext,
1917
417
                            $( $args::Abi, )*
1918
417
                            R::Retptr,
1919
417
                        ) -> R::Abi,
1920
417
                    >(ptr);
1921
417
1922
417
                    let mut _n = 0;
1923
417
                    $(
1924
417
                        let $args = $args::abi_from_raw(args.add(_n));
1925
417
                        _n += 1;
1926
417
                    )*
1927
417
                    R::wrap_trampoline(args, |retptr| {
1928
417
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
417
                    });
1930
417
                }
1931
417
1932
417
                let ty = R::func_type(
1933
417
                    None::<ValType>.into_iter()
1934
417
                        $(.chain(Some($args::valtype())))*
1935
417
                );
1936
417
1937
417
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
417
1939
417
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
417
1941
417
                let ctx = unsafe {
1942
417
                    VMHostFuncContext::new(
1943
417
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
417
                        shared_signature_id,
1945
417
                        Box::new(self),
1946
417
                    )
1947
417
                };
1948
417
1949
417
                (ctx, shared_signature_id, trampoline)
1950
417
            }
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<[u8; 65], fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::recover_secp_public_key<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<u64, fvm::kernel::error::ExecutionError>, fvm::syscalls::gas::available<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
417
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
417
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
417
                /// calls the wrapped host function, and returns the translated
1807
417
                /// result back to Wasm.
1808
417
                ///
1809
417
                /// Note that this shim's ABI must *exactly* match that expected
1810
417
                /// by Cranelift, since Cranelift is generating raw function
1811
417
                /// calls directly to this function.
1812
417
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
417
                    vmctx: *mut VMOpaqueContext,
1814
417
                    caller_vmctx: *mut VMContext,
1815
417
                    $( $args: $args::Abi, )*
1816
417
                    retptr: R::Retptr,
1817
417
                ) -> R::Abi
1818
417
                where
1819
417
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
417
                    $( $args: WasmTy, )*
1821
417
                    R: WasmRet,
1822
417
                {
1823
417
                    enum CallResult<U> {
1824
417
                        Ok(U),
1825
417
                        Trap(anyhow::Error),
1826
417
                        Panic(Box<dyn std::any::Any + Send>),
1827
417
                    }
1828
417
1829
417
                    // Note that this `result` is intentionally scoped into a
1830
417
                    // separate block. Handling traps and panics will involve
1831
417
                    // longjmp-ing from this function which means we won't run
1832
417
                    // destructors. As a result anything requiring a destructor
1833
417
                    // should be part of this block, and the long-jmp-ing
1834
417
                    // happens after the block in handling `CallResult`.
1835
417
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
417
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
417
                        let state = (*vmctx).host_state();
1838
417
1839
417
                        // Double-check ourselves in debug mode, but we control
1840
417
                        // the `Any` here so an unsafe downcast should also
1841
417
                        // work.
1842
417
                        debug_assert!(state.is::<F>());
1843
417
                        let func = &*(state as *const _ as *const F);
1844
417
1845
417
                        let ret = {
1846
417
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
417
                                    return R::fallible_from_trap(trap);
1849
417
                                }
1850
417
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
417
                                let r = func(
1852
417
                                    caller.sub_caller(),
1853
417
                                    $( $args, )*
1854
417
                                );
1855
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
417
                                    return R::fallible_from_trap(trap);
1857
417
                                }
1858
417
                                r.into_fallible()
1859
417
                            }))
1860
417
                        };
1861
417
1862
417
                        // Note that we need to be careful when dealing with traps
1863
417
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
417
                        // that it's not unwinding and consequently no Rust
1865
417
                        // destructors are run. We need to be careful to ensure that
1866
417
                        // nothing on the stack needs a destructor when we exit
1867
417
                        // abnormally from this `match`, e.g. on `Err`, on
1868
417
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
417
                        match ret {
1870
417
                            Err(panic) => CallResult::Panic(panic),
1871
417
                            Ok(ret) => {
1872
417
                                // Because the wrapped function is not `unsafe`, we
1873
417
                                // can't assume it returned a value that is
1874
417
                                // compatible with this store.
1875
417
                                if !ret.compatible_with_store(caller.store.0) {
1876
417
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
417
                                } else {
1878
417
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
417
                                        Ok(val) => CallResult::Ok(val),
1880
417
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
417
                                    }
1882
417
                                }
1883
417
1884
417
                            }
1885
417
                        }
1886
417
                    });
1887
417
1888
417
                    match result {
1889
417
                        CallResult::Ok(val) => val,
1890
417
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
417
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
417
                    }
1893
417
                }
1894
417
1895
417
                /// This trampoline allows host code to indirectly call the
1896
417
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
417
                /// happens to reference our wrapped function).
1898
417
                ///
1899
417
                /// It reads the arguments out of the incoming `args` array,
1900
417
                /// calls the given function pointer, and then stores the result
1901
417
                /// back into the `args` array.
1902
417
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
417
                    callee_vmctx: *mut VMOpaqueContext,
1904
417
                    caller_vmctx: *mut VMContext,
1905
417
                    ptr: *const VMFunctionBody,
1906
417
                    args: *mut ValRaw,
1907
417
                )
1908
417
                where
1909
417
                    $($args: WasmTy,)*
1910
417
                    R: WasmRet,
1911
417
                {
1912
417
                    let ptr = mem::transmute::<
1913
417
                        *const VMFunctionBody,
1914
417
                        unsafe extern "C" fn(
1915
417
                            *mut VMOpaqueContext,
1916
417
                            *mut VMContext,
1917
417
                            $( $args::Abi, )*
1918
417
                            R::Retptr,
1919
417
                        ) -> R::Abi,
1920
417
                    >(ptr);
1921
417
1922
417
                    let mut _n = 0;
1923
417
                    $(
1924
417
                        let $args = $args::abi_from_raw(args.add(_n));
1925
417
                        _n += 1;
1926
417
                    )*
1927
417
                    R::wrap_trampoline(args, |retptr| {
1928
417
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
417
                    });
1930
417
                }
1931
417
1932
417
                let ty = R::func_type(
1933
417
                    None::<ValType>.into_iter()
1934
417
                        $(.chain(Some($args::valtype())))*
1935
417
                );
1936
417
1937
417
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
417
1939
417
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
417
1941
417
                let ctx = unsafe {
1942
417
                    VMHostFuncContext::new(
1943
417
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
417
                        shared_signature_id,
1945
417
                        Box::new(self),
1946
417
                    )
1947
417
                };
1948
417
1949
417
                (ctx, shared_signature_id, trampoline)
1950
417
            }
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u64, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_link<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u64, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<fvm_shared::sys::out::ipld::IpldStat, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_stat<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_aggregate_seals<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
417
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
417
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
417
                /// calls the wrapped host function, and returns the translated
1807
417
                /// result back to Wasm.
1808
417
                ///
1809
417
                /// Note that this shim's ABI must *exactly* match that expected
1810
417
                /// by Cranelift, since Cranelift is generating raw function
1811
417
                /// calls directly to this function.
1812
417
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
417
                    vmctx: *mut VMOpaqueContext,
1814
417
                    caller_vmctx: *mut VMContext,
1815
417
                    $( $args: $args::Abi, )*
1816
417
                    retptr: R::Retptr,
1817
417
                ) -> R::Abi
1818
417
                where
1819
417
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
417
                    $( $args: WasmTy, )*
1821
417
                    R: WasmRet,
1822
417
                {
1823
417
                    enum CallResult<U> {
1824
417
                        Ok(U),
1825
417
                        Trap(anyhow::Error),
1826
417
                        Panic(Box<dyn std::any::Any + Send>),
1827
417
                    }
1828
417
1829
417
                    // Note that this `result` is intentionally scoped into a
1830
417
                    // separate block. Handling traps and panics will involve
1831
417
                    // longjmp-ing from this function which means we won't run
1832
417
                    // destructors. As a result anything requiring a destructor
1833
417
                    // should be part of this block, and the long-jmp-ing
1834
417
                    // happens after the block in handling `CallResult`.
1835
417
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
417
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
417
                        let state = (*vmctx).host_state();
1838
417
1839
417
                        // Double-check ourselves in debug mode, but we control
1840
417
                        // the `Any` here so an unsafe downcast should also
1841
417
                        // work.
1842
417
                        debug_assert!(state.is::<F>());
1843
417
                        let func = &*(state as *const _ as *const F);
1844
417
1845
417
                        let ret = {
1846
417
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
417
                                    return R::fallible_from_trap(trap);
1849
417
                                }
1850
417
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
417
                                let r = func(
1852
417
                                    caller.sub_caller(),
1853
417
                                    $( $args, )*
1854
417
                                );
1855
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
417
                                    return R::fallible_from_trap(trap);
1857
417
                                }
1858
417
                                r.into_fallible()
1859
417
                            }))
1860
417
                        };
1861
417
1862
417
                        // Note that we need to be careful when dealing with traps
1863
417
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
417
                        // that it's not unwinding and consequently no Rust
1865
417
                        // destructors are run. We need to be careful to ensure that
1866
417
                        // nothing on the stack needs a destructor when we exit
1867
417
                        // abnormally from this `match`, e.g. on `Err`, on
1868
417
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
417
                        match ret {
1870
417
                            Err(panic) => CallResult::Panic(panic),
1871
417
                            Ok(ret) => {
1872
417
                                // Because the wrapped function is not `unsafe`, we
1873
417
                                // can't assume it returned a value that is
1874
417
                                // compatible with this store.
1875
417
                                if !ret.compatible_with_store(caller.store.0) {
1876
417
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
417
                                } else {
1878
417
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
417
                                        Ok(val) => CallResult::Ok(val),
1880
417
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
417
                                    }
1882
417
                                }
1883
417
1884
417
                            }
1885
417
                        }
1886
417
                    });
1887
417
1888
417
                    match result {
1889
417
                        CallResult::Ok(val) => val,
1890
417
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
417
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
417
                    }
1893
417
                }
1894
417
1895
417
                /// This trampoline allows host code to indirectly call the
1896
417
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
417
                /// happens to reference our wrapped function).
1898
417
                ///
1899
417
                /// It reads the arguments out of the incoming `args` array,
1900
417
                /// calls the given function pointer, and then stores the result
1901
417
                /// back into the `args` array.
1902
417
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
417
                    callee_vmctx: *mut VMOpaqueContext,
1904
417
                    caller_vmctx: *mut VMContext,
1905
417
                    ptr: *const VMFunctionBody,
1906
417
                    args: *mut ValRaw,
1907
417
                )
1908
417
                where
1909
417
                    $($args: WasmTy,)*
1910
417
                    R: WasmRet,
1911
417
                {
1912
417
                    let ptr = mem::transmute::<
1913
417
                        *const VMFunctionBody,
1914
417
                        unsafe extern "C" fn(
1915
417
                            *mut VMOpaqueContext,
1916
417
                            *mut VMContext,
1917
417
                            $( $args::Abi, )*
1918
417
                            R::Retptr,
1919
417
                        ) -> R::Abi,
1920
417
                    >(ptr);
1921
417
1922
417
                    let mut _n = 0;
1923
417
                    $(
1924
417
                        let $args = $args::abi_from_raw(args.add(_n));
1925
417
                        _n += 1;
1926
417
                    )*
1927
417
                    R::wrap_trampoline(args, |retptr| {
1928
417
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
417
                    });
1930
417
                }
1931
417
1932
417
                let ty = R::func_type(
1933
417
                    None::<ValType>.into_iter()
1934
417
                        $(.chain(Some($args::valtype())))*
1935
417
                );
1936
417
1937
417
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
417
1939
417
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
417
1941
417
                let ctx = unsafe {
1942
417
                    VMHostFuncContext::new(
1943
417
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
417
                        shared_signature_id,
1945
417
                        Box::new(self),
1946
417
                    )
1947
417
                };
1948
417
1949
417
                (ctx, shared_signature_id, trampoline)
1950
417
            }
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_actor_code_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u64, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<fvm_shared::sys::out::ipld::IpldStat, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_stat<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
417
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
417
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
417
                /// calls the wrapped host function, and returns the translated
1807
417
                /// result back to Wasm.
1808
417
                ///
1809
417
                /// Note that this shim's ABI must *exactly* match that expected
1810
417
                /// by Cranelift, since Cranelift is generating raw function
1811
417
                /// calls directly to this function.
1812
417
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
417
                    vmctx: *mut VMOpaqueContext,
1814
417
                    caller_vmctx: *mut VMContext,
1815
417
                    $( $args: $args::Abi, )*
1816
417
                    retptr: R::Retptr,
1817
417
                ) -> R::Abi
1818
417
                where
1819
417
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
417
                    $( $args: WasmTy, )*
1821
417
                    R: WasmRet,
1822
417
                {
1823
417
                    enum CallResult<U> {
1824
417
                        Ok(U),
1825
417
                        Trap(anyhow::Error),
1826
417
                        Panic(Box<dyn std::any::Any + Send>),
1827
417
                    }
1828
417
1829
417
                    // Note that this `result` is intentionally scoped into a
1830
417
                    // separate block. Handling traps and panics will involve
1831
417
                    // longjmp-ing from this function which means we won't run
1832
417
                    // destructors. As a result anything requiring a destructor
1833
417
                    // should be part of this block, and the long-jmp-ing
1834
417
                    // happens after the block in handling `CallResult`.
1835
417
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
417
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
417
                        let state = (*vmctx).host_state();
1838
417
1839
417
                        // Double-check ourselves in debug mode, but we control
1840
417
                        // the `Any` here so an unsafe downcast should also
1841
417
                        // work.
1842
417
                        debug_assert!(state.is::<F>());
1843
417
                        let func = &*(state as *const _ as *const F);
1844
417
1845
417
                        let ret = {
1846
417
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
417
                                    return R::fallible_from_trap(trap);
1849
417
                                }
1850
417
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
417
                                let r = func(
1852
417
                                    caller.sub_caller(),
1853
417
                                    $( $args, )*
1854
417
                                );
1855
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
417
                                    return R::fallible_from_trap(trap);
1857
417
                                }
1858
417
                                r.into_fallible()
1859
417
                            }))
1860
417
                        };
1861
417
1862
417
                        // Note that we need to be careful when dealing with traps
1863
417
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
417
                        // that it's not unwinding and consequently no Rust
1865
417
                        // destructors are run. We need to be careful to ensure that
1866
417
                        // nothing on the stack needs a destructor when we exit
1867
417
                        // abnormally from this `match`, e.g. on `Err`, on
1868
417
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
417
                        match ret {
1870
417
                            Err(panic) => CallResult::Panic(panic),
1871
417
                            Ok(ret) => {
1872
417
                                // Because the wrapped function is not `unsafe`, we
1873
417
                                // can't assume it returned a value that is
1874
417
                                // compatible with this store.
1875
417
                                if !ret.compatible_with_store(caller.store.0) {
1876
417
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
417
                                } else {
1878
417
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
417
                                        Ok(val) => CallResult::Ok(val),
1880
417
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
417
                                    }
1882
417
                                }
1883
417
1884
417
                            }
1885
417
                        }
1886
417
                    });
1887
417
1888
417
                    match result {
1889
417
                        CallResult::Ok(val) => val,
1890
417
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
417
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
417
                    }
1893
417
                }
1894
417
1895
417
                /// This trampoline allows host code to indirectly call the
1896
417
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
417
                /// happens to reference our wrapped function).
1898
417
                ///
1899
417
                /// It reads the arguments out of the incoming `args` array,
1900
417
                /// calls the given function pointer, and then stores the result
1901
417
                /// back into the `args` array.
1902
417
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
417
                    callee_vmctx: *mut VMOpaqueContext,
1904
417
                    caller_vmctx: *mut VMContext,
1905
417
                    ptr: *const VMFunctionBody,
1906
417
                    args: *mut ValRaw,
1907
417
                )
1908
417
                where
1909
417
                    $($args: WasmTy,)*
1910
417
                    R: WasmRet,
1911
417
                {
1912
417
                    let ptr = mem::transmute::<
1913
417
                        *const VMFunctionBody,
1914
417
                        unsafe extern "C" fn(
1915
417
                            *mut VMOpaqueContext,
1916
417
                            *mut VMContext,
1917
417
                            $( $args::Abi, )*
1918
417
                            R::Retptr,
1919
417
                        ) -> R::Abi,
1920
417
                    >(ptr);
1921
417
1922
417
                    let mut _n = 0;
1923
417
                    $(
1924
417
                        let $args = $args::abi_from_raw(args.add(_n));
1925
417
                        _n += 1;
1926
417
                    )*
1927
417
                    R::wrap_trampoline(args, |retptr| {
1928
417
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
417
                    });
1930
417
                }
1931
417
1932
417
                let ty = R::func_type(
1933
417
                    None::<ValType>.into_iter()
1934
417
                        $(.chain(Some($args::valtype())))*
1935
417
                );
1936
417
1937
417
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
417
1939
417
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
417
1941
417
                let ctx = unsafe {
1942
417
                    VMHostFuncContext::new(
1943
417
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
417
                        shared_signature_id,
1945
417
                        Box::new(self),
1946
417
                    )
1947
417
                };
1948
417
1949
417
                (ctx, shared_signature_id, trampoline)
1950
417
            }
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<fvm_shared::sys::out::ipld::IpldOpen, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_open<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
417
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
417
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
417
                /// calls the wrapped host function, and returns the translated
1807
417
                /// result back to Wasm.
1808
417
                ///
1809
417
                /// Note that this shim's ABI must *exactly* match that expected
1810
417
                /// by Cranelift, since Cranelift is generating raw function
1811
417
                /// calls directly to this function.
1812
417
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
417
                    vmctx: *mut VMOpaqueContext,
1814
417
                    caller_vmctx: *mut VMContext,
1815
417
                    $( $args: $args::Abi, )*
1816
417
                    retptr: R::Retptr,
1817
417
                ) -> R::Abi
1818
417
                where
1819
417
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
417
                    $( $args: WasmTy, )*
1821
417
                    R: WasmRet,
1822
417
                {
1823
417
                    enum CallResult<U> {
1824
417
                        Ok(U),
1825
417
                        Trap(anyhow::Error),
1826
417
                        Panic(Box<dyn std::any::Any + Send>),
1827
417
                    }
1828
417
1829
417
                    // Note that this `result` is intentionally scoped into a
1830
417
                    // separate block. Handling traps and panics will involve
1831
417
                    // longjmp-ing from this function which means we won't run
1832
417
                    // destructors. As a result anything requiring a destructor
1833
417
                    // should be part of this block, and the long-jmp-ing
1834
417
                    // happens after the block in handling `CallResult`.
1835
417
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
417
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
417
                        let state = (*vmctx).host_state();
1838
417
1839
417
                        // Double-check ourselves in debug mode, but we control
1840
417
                        // the `Any` here so an unsafe downcast should also
1841
417
                        // work.
1842
417
                        debug_assert!(state.is::<F>());
1843
417
                        let func = &*(state as *const _ as *const F);
1844
417
1845
417
                        let ret = {
1846
417
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
417
                                    return R::fallible_from_trap(trap);
1849
417
                                }
1850
417
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
417
                                let r = func(
1852
417
                                    caller.sub_caller(),
1853
417
                                    $( $args, )*
1854
417
                                );
1855
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
417
                                    return R::fallible_from_trap(trap);
1857
417
                                }
1858
417
                                r.into_fallible()
1859
417
                            }))
1860
417
                        };
1861
417
1862
417
                        // Note that we need to be careful when dealing with traps
1863
417
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
417
                        // that it's not unwinding and consequently no Rust
1865
417
                        // destructors are run. We need to be careful to ensure that
1866
417
                        // nothing on the stack needs a destructor when we exit
1867
417
                        // abnormally from this `match`, e.g. on `Err`, on
1868
417
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
417
                        match ret {
1870
417
                            Err(panic) => CallResult::Panic(panic),
1871
417
                            Ok(ret) => {
1872
417
                                // Because the wrapped function is not `unsafe`, we
1873
417
                                // can't assume it returned a value that is
1874
417
                                // compatible with this store.
1875
417
                                if !ret.compatible_with_store(caller.store.0) {
1876
417
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
417
                                } else {
1878
417
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
417
                                        Ok(val) => CallResult::Ok(val),
1880
417
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
417
                                    }
1882
417
                                }
1883
417
1884
417
                            }
1885
417
                        }
1886
417
                    });
1887
417
1888
417
                    match result {
1889
417
                        CallResult::Ok(val) => val,
1890
417
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
417
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
417
                    }
1893
417
                }
1894
417
1895
417
                /// This trampoline allows host code to indirectly call the
1896
417
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
417
                /// happens to reference our wrapped function).
1898
417
                ///
1899
417
                /// It reads the arguments out of the incoming `args` array,
1900
417
                /// calls the given function pointer, and then stores the result
1901
417
                /// back into the `args` array.
1902
417
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
417
                    callee_vmctx: *mut VMOpaqueContext,
1904
417
                    caller_vmctx: *mut VMContext,
1905
417
                    ptr: *const VMFunctionBody,
1906
417
                    args: *mut ValRaw,
1907
417
                )
1908
417
                where
1909
417
                    $($args: WasmTy,)*
1910
417
                    R: WasmRet,
1911
417
                {
1912
417
                    let ptr = mem::transmute::<
1913
417
                        *const VMFunctionBody,
1914
417
                        unsafe extern "C" fn(
1915
417
                            *mut VMOpaqueContext,
1916
417
                            *mut VMContext,
1917
417
                            $( $args::Abi, )*
1918
417
                            R::Retptr,
1919
417
                        ) -> R::Abi,
1920
417
                    >(ptr);
1921
417
1922
417
                    let mut _n = 0;
1923
417
                    $(
1924
417
                        let $args = $args::abi_from_raw(args.add(_n));
1925
417
                        _n += 1;
1926
417
                    )*
1927
417
                    R::wrap_trampoline(args, |retptr| {
1928
417
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
417
                    });
1930
417
                }
1931
417
1932
417
                let ty = R::func_type(
1933
417
                    None::<ValType>.into_iter()
1934
417
                        $(.chain(Some($args::valtype())))*
1935
417
                );
1936
417
1937
417
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
417
1939
417
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
417
1941
417
                let ctx = unsafe {
1942
417
                    VMHostFuncContext::new(
1943
417
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
417
                        shared_signature_id,
1945
417
                        Box::new(self),
1946
417
                    )
1947
417
                };
1948
417
1949
417
                (ctx, shared_signature_id, trampoline)
1950
417
            }
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::current_balance<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>,), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<fvm_shared::sys::out::ipld::IpldOpen, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_open<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::root<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
417
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
417
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
417
                /// calls the wrapped host function, and returns the translated
1807
417
                /// result back to Wasm.
1808
417
                ///
1809
417
                /// Note that this shim's ABI must *exactly* match that expected
1810
417
                /// by Cranelift, since Cranelift is generating raw function
1811
417
                /// calls directly to this function.
1812
417
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
417
                    vmctx: *mut VMOpaqueContext,
1814
417
                    caller_vmctx: *mut VMContext,
1815
417
                    $( $args: $args::Abi, )*
1816
417
                    retptr: R::Retptr,
1817
417
                ) -> R::Abi
1818
417
                where
1819
417
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
417
                    $( $args: WasmTy, )*
1821
417
                    R: WasmRet,
1822
417
                {
1823
417
                    enum CallResult<U> {
1824
417
                        Ok(U),
1825
417
                        Trap(anyhow::Error),
1826
417
                        Panic(Box<dyn std::any::Any + Send>),
1827
417
                    }
1828
417
1829
417
                    // Note that this `result` is intentionally scoped into a
1830
417
                    // separate block. Handling traps and panics will involve
1831
417
                    // longjmp-ing from this function which means we won't run
1832
417
                    // destructors. As a result anything requiring a destructor
1833
417
                    // should be part of this block, and the long-jmp-ing
1834
417
                    // happens after the block in handling `CallResult`.
1835
417
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
417
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
417
                        let state = (*vmctx).host_state();
1838
417
1839
417
                        // Double-check ourselves in debug mode, but we control
1840
417
                        // the `Any` here so an unsafe downcast should also
1841
417
                        // work.
1842
417
                        debug_assert!(state.is::<F>());
1843
417
                        let func = &*(state as *const _ as *const F);
1844
417
1845
417
                        let ret = {
1846
417
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
417
                                    return R::fallible_from_trap(trap);
1849
417
                                }
1850
417
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
417
                                let r = func(
1852
417
                                    caller.sub_caller(),
1853
417
                                    $( $args, )*
1854
417
                                );
1855
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
417
                                    return R::fallible_from_trap(trap);
1857
417
                                }
1858
417
                                r.into_fallible()
1859
417
                            }))
1860
417
                        };
1861
417
1862
417
                        // Note that we need to be careful when dealing with traps
1863
417
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
417
                        // that it's not unwinding and consequently no Rust
1865
417
                        // destructors are run. We need to be careful to ensure that
1866
417
                        // nothing on the stack needs a destructor when we exit
1867
417
                        // abnormally from this `match`, e.g. on `Err`, on
1868
417
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
417
                        match ret {
1870
417
                            Err(panic) => CallResult::Panic(panic),
1871
417
                            Ok(ret) => {
1872
417
                                // Because the wrapped function is not `unsafe`, we
1873
417
                                // can't assume it returned a value that is
1874
417
                                // compatible with this store.
1875
417
                                if !ret.compatible_with_store(caller.store.0) {
1876
417
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
417
                                } else {
1878
417
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
417
                                        Ok(val) => CallResult::Ok(val),
1880
417
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
417
                                    }
1882
417
                                }
1883
417
1884
417
                            }
1885
417
                        }
1886
417
                    });
1887
417
1888
417
                    match result {
1889
417
                        CallResult::Ok(val) => val,
1890
417
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
417
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
417
                    }
1893
417
                }
1894
417
1895
417
                /// This trampoline allows host code to indirectly call the
1896
417
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
417
                /// happens to reference our wrapped function).
1898
417
                ///
1899
417
                /// It reads the arguments out of the incoming `args` array,
1900
417
                /// calls the given function pointer, and then stores the result
1901
417
                /// back into the `args` array.
1902
417
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
417
                    callee_vmctx: *mut VMOpaqueContext,
1904
417
                    caller_vmctx: *mut VMContext,
1905
417
                    ptr: *const VMFunctionBody,
1906
417
                    args: *mut ValRaw,
1907
417
                )
1908
417
                where
1909
417
                    $($args: WasmTy,)*
1910
417
                    R: WasmRet,
1911
417
                {
1912
417
                    let ptr = mem::transmute::<
1913
417
                        *const VMFunctionBody,
1914
417
                        unsafe extern "C" fn(
1915
417
                            *mut VMOpaqueContext,
1916
417
                            *mut VMContext,
1917
417
                            $( $args::Abi, )*
1918
417
                            R::Retptr,
1919
417
                        ) -> R::Abi,
1920
417
                    >(ptr);
1921
417
1922
417
                    let mut _n = 0;
1923
417
                    $(
1924
417
                        let $args = $args::abi_from_raw(args.add(_n));
1925
417
                        _n += 1;
1926
417
                    )*
1927
417
                    R::wrap_trampoline(args, |retptr| {
1928
417
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
417
                    });
1930
417
                }
1931
417
1932
417
                let ty = R::func_type(
1933
417
                    None::<ValType>.into_iter()
1934
417
                        $(.chain(Some($args::valtype())))*
1935
417
                );
1936
417
1937
417
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
417
1939
417
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
417
1941
417
                let ctx = unsafe {
1942
417
                    VMHostFuncContext::new(
1943
417
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
417
                        shared_signature_id,
1945
417
                        Box::new(self),
1946
417
                    )
1947
417
                };
1948
417
1949
417
                (ctx, shared_signature_id, trampoline)
1950
417
            }
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::self_destruct<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32, u32, u32), core::result::Result<fvm_shared::sys::out::crypto::VerifyConsensusFault, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_consensus_fault<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::batch_verify_seals<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
417
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
417
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
417
                /// calls the wrapped host function, and returns the translated
1807
417
                /// result back to Wasm.
1808
417
                ///
1809
417
                /// Note that this shim's ABI must *exactly* match that expected
1810
417
                /// by Cranelift, since Cranelift is generating raw function
1811
417
                /// calls directly to this function.
1812
417
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
417
                    vmctx: *mut VMOpaqueContext,
1814
417
                    caller_vmctx: *mut VMContext,
1815
417
                    $( $args: $args::Abi, )*
1816
417
                    retptr: R::Retptr,
1817
417
                ) -> R::Abi
1818
417
                where
1819
417
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
417
                    $( $args: WasmTy, )*
1821
417
                    R: WasmRet,
1822
417
                {
1823
417
                    enum CallResult<U> {
1824
417
                        Ok(U),
1825
417
                        Trap(anyhow::Error),
1826
417
                        Panic(Box<dyn std::any::Any + Send>),
1827
417
                    }
1828
417
1829
417
                    // Note that this `result` is intentionally scoped into a
1830
417
                    // separate block. Handling traps and panics will involve
1831
417
                    // longjmp-ing from this function which means we won't run
1832
417
                    // destructors. As a result anything requiring a destructor
1833
417
                    // should be part of this block, and the long-jmp-ing
1834
417
                    // happens after the block in handling `CallResult`.
1835
417
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
417
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
417
                        let state = (*vmctx).host_state();
1838
417
1839
417
                        // Double-check ourselves in debug mode, but we control
1840
417
                        // the `Any` here so an unsafe downcast should also
1841
417
                        // work.
1842
417
                        debug_assert!(state.is::<F>());
1843
417
                        let func = &*(state as *const _ as *const F);
1844
417
1845
417
                        let ret = {
1846
417
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
417
                                    return R::fallible_from_trap(trap);
1849
417
                                }
1850
417
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
417
                                let r = func(
1852
417
                                    caller.sub_caller(),
1853
417
                                    $( $args, )*
1854
417
                                );
1855
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
417
                                    return R::fallible_from_trap(trap);
1857
417
                                }
1858
417
                                r.into_fallible()
1859
417
                            }))
1860
417
                        };
1861
417
1862
417
                        // Note that we need to be careful when dealing with traps
1863
417
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
417
                        // that it's not unwinding and consequently no Rust
1865
417
                        // destructors are run. We need to be careful to ensure that
1866
417
                        // nothing on the stack needs a destructor when we exit
1867
417
                        // abnormally from this `match`, e.g. on `Err`, on
1868
417
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
417
                        match ret {
1870
417
                            Err(panic) => CallResult::Panic(panic),
1871
417
                            Ok(ret) => {
1872
417
                                // Because the wrapped function is not `unsafe`, we
1873
417
                                // can't assume it returned a value that is
1874
417
                                // compatible with this store.
1875
417
                                if !ret.compatible_with_store(caller.store.0) {
1876
417
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
417
                                } else {
1878
417
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
417
                                        Ok(val) => CallResult::Ok(val),
1880
417
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
417
                                    }
1882
417
                                }
1883
417
1884
417
                            }
1885
417
                        }
1886
417
                    });
1887
417
1888
417
                    match result {
1889
417
                        CallResult::Ok(val) => val,
1890
417
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
417
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
417
                    }
1893
417
                }
1894
417
1895
417
                /// This trampoline allows host code to indirectly call the
1896
417
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
417
                /// happens to reference our wrapped function).
1898
417
                ///
1899
417
                /// It reads the arguments out of the incoming `args` array,
1900
417
                /// calls the given function pointer, and then stores the result
1901
417
                /// back into the `args` array.
1902
417
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
417
                    callee_vmctx: *mut VMOpaqueContext,
1904
417
                    caller_vmctx: *mut VMContext,
1905
417
                    ptr: *const VMFunctionBody,
1906
417
                    args: *mut ValRaw,
1907
417
                )
1908
417
                where
1909
417
                    $($args: WasmTy,)*
1910
417
                    R: WasmRet,
1911
417
                {
1912
417
                    let ptr = mem::transmute::<
1913
417
                        *const VMFunctionBody,
1914
417
                        unsafe extern "C" fn(
1915
417
                            *mut VMOpaqueContext,
1916
417
                            *mut VMContext,
1917
417
                            $( $args::Abi, )*
1918
417
                            R::Retptr,
1919
417
                        ) -> R::Abi,
1920
417
                    >(ptr);
1921
417
1922
417
                    let mut _n = 0;
1923
417
                    $(
1924
417
                        let $args = $args::abi_from_raw(args.add(_n));
1925
417
                        _n += 1;
1926
417
                    )*
1927
417
                    R::wrap_trampoline(args, |retptr| {
1928
417
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
417
                    });
1930
417
                }
1931
417
1932
417
                let ty = R::func_type(
1933
417
                    None::<ValType>.into_iter()
1934
417
                        $(.chain(Some($args::valtype())))*
1935
417
                );
1936
417
1937
417
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
417
1939
417
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
417
1941
417
                let ctx = unsafe {
1942
417
                    VMHostFuncContext::new(
1943
417
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
417
                        shared_signature_id,
1945
417
                        Box::new(self),
1946
417
                    )
1947
417
                };
1948
417
1949
417
                (ctx, shared_signature_id, trampoline)
1950
417
            }
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::current_balance<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
417
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
417
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
417
                /// calls the wrapped host function, and returns the translated
1807
417
                /// result back to Wasm.
1808
417
                ///
1809
417
                /// Note that this shim's ABI must *exactly* match that expected
1810
417
                /// by Cranelift, since Cranelift is generating raw function
1811
417
                /// calls directly to this function.
1812
417
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
417
                    vmctx: *mut VMOpaqueContext,
1814
417
                    caller_vmctx: *mut VMContext,
1815
417
                    $( $args: $args::Abi, )*
1816
417
                    retptr: R::Retptr,
1817
417
                ) -> R::Abi
1818
417
                where
1819
417
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
417
                    $( $args: WasmTy, )*
1821
417
                    R: WasmRet,
1822
417
                {
1823
417
                    enum CallResult<U> {
1824
417
                        Ok(U),
1825
417
                        Trap(anyhow::Error),
1826
417
                        Panic(Box<dyn std::any::Any + Send>),
1827
417
                    }
1828
417
1829
417
                    // Note that this `result` is intentionally scoped into a
1830
417
                    // separate block. Handling traps and panics will involve
1831
417
                    // longjmp-ing from this function which means we won't run
1832
417
                    // destructors. As a result anything requiring a destructor
1833
417
                    // should be part of this block, and the long-jmp-ing
1834
417
                    // happens after the block in handling `CallResult`.
1835
417
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
417
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
417
                        let state = (*vmctx).host_state();
1838
417
1839
417
                        // Double-check ourselves in debug mode, but we control
1840
417
                        // the `Any` here so an unsafe downcast should also
1841
417
                        // work.
1842
417
                        debug_assert!(state.is::<F>());
1843
417
                        let func = &*(state as *const _ as *const F);
1844
417
1845
417
                        let ret = {
1846
417
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
417
                                    return R::fallible_from_trap(trap);
1849
417
                                }
1850
417
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
417
                                let r = func(
1852
417
                                    caller.sub_caller(),
1853
417
                                    $( $args, )*
1854
417
                                );
1855
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
417
                                    return R::fallible_from_trap(trap);
1857
417
                                }
1858
417
                                r.into_fallible()
1859
417
                            }))
1860
417
                        };
1861
417
1862
417
                        // Note that we need to be careful when dealing with traps
1863
417
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
417
                        // that it's not unwinding and consequently no Rust
1865
417
                        // destructors are run. We need to be careful to ensure that
1866
417
                        // nothing on the stack needs a destructor when we exit
1867
417
                        // abnormally from this `match`, e.g. on `Err`, on
1868
417
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
417
                        match ret {
1870
417
                            Err(panic) => CallResult::Panic(panic),
1871
417
                            Ok(ret) => {
1872
417
                                // Because the wrapped function is not `unsafe`, we
1873
417
                                // can't assume it returned a value that is
1874
417
                                // compatible with this store.
1875
417
                                if !ret.compatible_with_store(caller.store.0) {
1876
417
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
417
                                } else {
1878
417
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
417
                                        Ok(val) => CallResult::Ok(val),
1880
417
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
417
                                    }
1882
417
                                }
1883
417
1884
417
                            }
1885
417
                        }
1886
417
                    });
1887
417
1888
417
                    match result {
1889
417
                        CallResult::Ok(val) => val,
1890
417
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
417
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
417
                    }
1893
417
                }
1894
417
1895
417
                /// This trampoline allows host code to indirectly call the
1896
417
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
417
                /// happens to reference our wrapped function).
1898
417
                ///
1899
417
                /// It reads the arguments out of the incoming `args` array,
1900
417
                /// calls the given function pointer, and then stores the result
1901
417
                /// back into the `args` array.
1902
417
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
417
                    callee_vmctx: *mut VMOpaqueContext,
1904
417
                    caller_vmctx: *mut VMContext,
1905
417
                    ptr: *const VMFunctionBody,
1906
417
                    args: *mut ValRaw,
1907
417
                )
1908
417
                where
1909
417
                    $($args: WasmTy,)*
1910
417
                    R: WasmRet,
1911
417
                {
1912
417
                    let ptr = mem::transmute::<
1913
417
                        *const VMFunctionBody,
1914
417
                        unsafe extern "C" fn(
1915
417
                            *mut VMOpaqueContext,
1916
417
                            *mut VMContext,
1917
417
                            $( $args::Abi, )*
1918
417
                            R::Retptr,
1919
417
                        ) -> R::Abi,
1920
417
                    >(ptr);
1921
417
1922
417
                    let mut _n = 0;
1923
417
                    $(
1924
417
                        let $args = $args::abi_from_raw(args.add(_n));
1925
417
                        _n += 1;
1926
417
                    )*
1927
417
                    R::wrap_trampoline(args, |retptr| {
1928
417
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
417
                    });
1930
417
                }
1931
417
1932
417
                let ty = R::func_type(
1933
417
                    None::<ValType>.into_iter()
1934
417
                        $(.chain(Some($args::valtype())))*
1935
417
                );
1936
417
1937
417
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
417
1939
417
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
417
1941
417
                let ctx = unsafe {
1942
417
                    VMHostFuncContext::new(
1943
417
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
417
                        shared_signature_id,
1945
417
                        Box::new(self),
1946
417
                    )
1947
417
                };
1948
417
1949
417
                (ctx, shared_signature_id, trampoline)
1950
417
            }
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32, u32, u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_signature<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<fvm::syscalls::vm::Never, fvm::syscalls::error::Abort>, fvm::syscalls::vm::exit<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::total_fil_circ_supply<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
417
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
417
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
417
                /// calls the wrapped host function, and returns the translated
1807
417
                /// result back to Wasm.
1808
417
                ///
1809
417
                /// Note that this shim's ABI must *exactly* match that expected
1810
417
                /// by Cranelift, since Cranelift is generating raw function
1811
417
                /// calls directly to this function.
1812
417
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
417
                    vmctx: *mut VMOpaqueContext,
1814
417
                    caller_vmctx: *mut VMContext,
1815
417
                    $( $args: $args::Abi, )*
1816
417
                    retptr: R::Retptr,
1817
417
                ) -> R::Abi
1818
417
                where
1819
417
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
417
                    $( $args: WasmTy, )*
1821
417
                    R: WasmRet,
1822
417
                {
1823
417
                    enum CallResult<U> {
1824
417
                        Ok(U),
1825
417
                        Trap(anyhow::Error),
1826
417
                        Panic(Box<dyn std::any::Any + Send>),
1827
417
                    }
1828
417
1829
417
                    // Note that this `result` is intentionally scoped into a
1830
417
                    // separate block. Handling traps and panics will involve
1831
417
                    // longjmp-ing from this function which means we won't run
1832
417
                    // destructors. As a result anything requiring a destructor
1833
417
                    // should be part of this block, and the long-jmp-ing
1834
417
                    // happens after the block in handling `CallResult`.
1835
417
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
417
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
417
                        let state = (*vmctx).host_state();
1838
417
1839
417
                        // Double-check ourselves in debug mode, but we control
1840
417
                        // the `Any` here so an unsafe downcast should also
1841
417
                        // work.
1842
417
                        debug_assert!(state.is::<F>());
1843
417
                        let func = &*(state as *const _ as *const F);
1844
417
1845
417
                        let ret = {
1846
417
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
417
                                    return R::fallible_from_trap(trap);
1849
417
                                }
1850
417
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
417
                                let r = func(
1852
417
                                    caller.sub_caller(),
1853
417
                                    $( $args, )*
1854
417
                                );
1855
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
417
                                    return R::fallible_from_trap(trap);
1857
417
                                }
1858
417
                                r.into_fallible()
1859
417
                            }))
1860
417
                        };
1861
417
1862
417
                        // Note that we need to be careful when dealing with traps
1863
417
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
417
                        // that it's not unwinding and consequently no Rust
1865
417
                        // destructors are run. We need to be careful to ensure that
1866
417
                        // nothing on the stack needs a destructor when we exit
1867
417
                        // abnormally from this `match`, e.g. on `Err`, on
1868
417
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
417
                        match ret {
1870
417
                            Err(panic) => CallResult::Panic(panic),
1871
417
                            Ok(ret) => {
1872
417
                                // Because the wrapped function is not `unsafe`, we
1873
417
                                // can't assume it returned a value that is
1874
417
                                // compatible with this store.
1875
417
                                if !ret.compatible_with_store(caller.store.0) {
1876
417
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
417
                                } else {
1878
417
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
417
                                        Ok(val) => CallResult::Ok(val),
1880
417
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
417
                                    }
1882
417
                                }
1883
417
1884
417
                            }
1885
417
                        }
1886
417
                    });
1887
417
1888
417
                    match result {
1889
417
                        CallResult::Ok(val) => val,
1890
417
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
417
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
417
                    }
1893
417
                }
1894
417
1895
417
                /// This trampoline allows host code to indirectly call the
1896
417
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
417
                /// happens to reference our wrapped function).
1898
417
                ///
1899
417
                /// It reads the arguments out of the incoming `args` array,
1900
417
                /// calls the given function pointer, and then stores the result
1901
417
                /// back into the `args` array.
1902
417
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
417
                    callee_vmctx: *mut VMOpaqueContext,
1904
417
                    caller_vmctx: *mut VMContext,
1905
417
                    ptr: *const VMFunctionBody,
1906
417
                    args: *mut ValRaw,
1907
417
                )
1908
417
                where
1909
417
                    $($args: WasmTy,)*
1910
417
                    R: WasmRet,
1911
417
                {
1912
417
                    let ptr = mem::transmute::<
1913
417
                        *const VMFunctionBody,
1914
417
                        unsafe extern "C" fn(
1915
417
                            *mut VMOpaqueContext,
1916
417
                            *mut VMContext,
1917
417
                            $( $args::Abi, )*
1918
417
                            R::Retptr,
1919
417
                        ) -> R::Abi,
1920
417
                    >(ptr);
1921
417
1922
417
                    let mut _n = 0;
1923
417
                    $(
1924
417
                        let $args = $args::abi_from_raw(args.add(_n));
1925
417
                        _n += 1;
1926
417
                    )*
1927
417
                    R::wrap_trampoline(args, |retptr| {
1928
417
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
417
                    });
1930
417
                }
1931
417
1932
417
                let ty = R::func_type(
1933
417
                    None::<ValType>.into_iter()
1934
417
                        $(.chain(Some($args::valtype())))*
1935
417
                );
1936
417
1937
417
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
417
1939
417
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
417
1941
417
                let ctx = unsafe {
1942
417
                    VMHostFuncContext::new(
1943
417
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
417
                        shared_signature_id,
1945
417
                        Box::new(self),
1946
417
                    )
1947
417
                };
1948
417
1949
417
                (ctx, shared_signature_id, trampoline)
1950
417
            }
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u64, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_link<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u64, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
417
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
417
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
417
                /// calls the wrapped host function, and returns the translated
1807
417
                /// result back to Wasm.
1808
417
                ///
1809
417
                /// Note that this shim's ABI must *exactly* match that expected
1810
417
                /// by Cranelift, since Cranelift is generating raw function
1811
417
                /// calls directly to this function.
1812
417
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
417
                    vmctx: *mut VMOpaqueContext,
1814
417
                    caller_vmctx: *mut VMContext,
1815
417
                    $( $args: $args::Abi, )*
1816
417
                    retptr: R::Retptr,
1817
417
                ) -> R::Abi
1818
417
                where
1819
417
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
417
                    $( $args: WasmTy, )*
1821
417
                    R: WasmRet,
1822
417
                {
1823
417
                    enum CallResult<U> {
1824
417
                        Ok(U),
1825
417
                        Trap(anyhow::Error),
1826
417
                        Panic(Box<dyn std::any::Any + Send>),
1827
417
                    }
1828
417
1829
417
                    // Note that this `result` is intentionally scoped into a
1830
417
                    // separate block. Handling traps and panics will involve
1831
417
                    // longjmp-ing from this function which means we won't run
1832
417
                    // destructors. As a result anything requiring a destructor
1833
417
                    // should be part of this block, and the long-jmp-ing
1834
417
                    // happens after the block in handling `CallResult`.
1835
417
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
417
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
417
                        let state = (*vmctx).host_state();
1838
417
1839
417
                        // Double-check ourselves in debug mode, but we control
1840
417
                        // the `Any` here so an unsafe downcast should also
1841
417
                        // work.
1842
417
                        debug_assert!(state.is::<F>());
1843
417
                        let func = &*(state as *const _ as *const F);
1844
417
1845
417
                        let ret = {
1846
417
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
417
                                    return R::fallible_from_trap(trap);
1849
417
                                }
1850
417
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
417
                                let r = func(
1852
417
                                    caller.sub_caller(),
1853
417
                                    $( $args, )*
1854
417
                                );
1855
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
417
                                    return R::fallible_from_trap(trap);
1857
417
                                }
1858
417
                                r.into_fallible()
1859
417
                            }))
1860
417
                        };
1861
417
1862
417
                        // Note that we need to be careful when dealing with traps
1863
417
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
417
                        // that it's not unwinding and consequently no Rust
1865
417
                        // destructors are run. We need to be careful to ensure that
1866
417
                        // nothing on the stack needs a destructor when we exit
1867
417
                        // abnormally from this `match`, e.g. on `Err`, on
1868
417
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
417
                        match ret {
1870
417
                            Err(panic) => CallResult::Panic(panic),
1871
417
                            Ok(ret) => {
1872
417
                                // Because the wrapped function is not `unsafe`, we
1873
417
                                // can't assume it returned a value that is
1874
417
                                // compatible with this store.
1875
417
                                if !ret.compatible_with_store(caller.store.0) {
1876
417
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
417
                                } else {
1878
417
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
417
                                        Ok(val) => CallResult::Ok(val),
1880
417
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
417
                                    }
1882
417
                                }
1883
417
1884
417
                            }
1885
417
                        }
1886
417
                    });
1887
417
1888
417
                    match result {
1889
417
                        CallResult::Ok(val) => val,
1890
417
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
417
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
417
                    }
1893
417
                }
1894
417
1895
417
                /// This trampoline allows host code to indirectly call the
1896
417
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
417
                /// happens to reference our wrapped function).
1898
417
                ///
1899
417
                /// It reads the arguments out of the incoming `args` array,
1900
417
                /// calls the given function pointer, and then stores the result
1901
417
                /// back into the `args` array.
1902
417
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
417
                    callee_vmctx: *mut VMOpaqueContext,
1904
417
                    caller_vmctx: *mut VMContext,
1905
417
                    ptr: *const VMFunctionBody,
1906
417
                    args: *mut ValRaw,
1907
417
                )
1908
417
                where
1909
417
                    $($args: WasmTy,)*
1910
417
                    R: WasmRet,
1911
417
                {
1912
417
                    let ptr = mem::transmute::<
1913
417
                        *const VMFunctionBody,
1914
417
                        unsafe extern "C" fn(
1915
417
                            *mut VMOpaqueContext,
1916
417
                            *mut VMContext,
1917
417
                            $( $args::Abi, )*
1918
417
                            R::Retptr,
1919
417
                        ) -> R::Abi,
1920
417
                    >(ptr);
1921
417
1922
417
                    let mut _n = 0;
1923
417
                    $(
1924
417
                        let $args = $args::abi_from_raw(args.add(_n));
1925
417
                        _n += 1;
1926
417
                    )*
1927
417
                    R::wrap_trampoline(args, |retptr| {
1928
417
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
417
                    });
1930
417
                }
1931
417
1932
417
                let ty = R::func_type(
1933
417
                    None::<ValType>.into_iter()
1934
417
                        $(.chain(Some($args::valtype())))*
1935
417
                );
1936
417
1937
417
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
417
1939
417
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
417
1941
417
                let ctx = unsafe {
1942
417
                    VMHostFuncContext::new(
1943
417
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
417
                        shared_signature_id,
1945
417
                        Box::new(self),
1946
417
                    )
1947
417
                };
1948
417
1949
417
                (ctx, shared_signature_id, trampoline)
1950
417
            }
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, i64, u32, u32), core::result::Result<[u8; 32], fvm::kernel::error::ExecutionError>, fvm::syscalls::rand::get_chain_randomness<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, i64, i64, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
417
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
417
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
417
                /// calls the wrapped host function, and returns the translated
1807
417
                /// result back to Wasm.
1808
417
                ///
1809
417
                /// Note that this shim's ABI must *exactly* match that expected
1810
417
                /// by Cranelift, since Cranelift is generating raw function
1811
417
                /// calls directly to this function.
1812
417
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
417
                    vmctx: *mut VMOpaqueContext,
1814
417
                    caller_vmctx: *mut VMContext,
1815
417
                    $( $args: $args::Abi, )*
1816
417
                    retptr: R::Retptr,
1817
417
                ) -> R::Abi
1818
417
                where
1819
417
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
417
                    $( $args: WasmTy, )*
1821
417
                    R: WasmRet,
1822
417
                {
1823
417
                    enum CallResult<U> {
1824
417
                        Ok(U),
1825
417
                        Trap(anyhow::Error),
1826
417
                        Panic(Box<dyn std::any::Any + Send>),
1827
417
                    }
1828
417
1829
417
                    // Note that this `result` is intentionally scoped into a
1830
417
                    // separate block. Handling traps and panics will involve
1831
417
                    // longjmp-ing from this function which means we won't run
1832
417
                    // destructors. As a result anything requiring a destructor
1833
417
                    // should be part of this block, and the long-jmp-ing
1834
417
                    // happens after the block in handling `CallResult`.
1835
417
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
417
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
417
                        let state = (*vmctx).host_state();
1838
417
1839
417
                        // Double-check ourselves in debug mode, but we control
1840
417
                        // the `Any` here so an unsafe downcast should also
1841
417
                        // work.
1842
417
                        debug_assert!(state.is::<F>());
1843
417
                        let func = &*(state as *const _ as *const F);
1844
417
1845
417
                        let ret = {
1846
417
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
417
                                    return R::fallible_from_trap(trap);
1849
417
                                }
1850
417
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
417
                                let r = func(
1852
417
                                    caller.sub_caller(),
1853
417
                                    $( $args, )*
1854
417
                                );
1855
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
417
                                    return R::fallible_from_trap(trap);
1857
417
                                }
1858
417
                                r.into_fallible()
1859
417
                            }))
1860
417
                        };
1861
417
1862
417
                        // Note that we need to be careful when dealing with traps
1863
417
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
417
                        // that it's not unwinding and consequently no Rust
1865
417
                        // destructors are run. We need to be careful to ensure that
1866
417
                        // nothing on the stack needs a destructor when we exit
1867
417
                        // abnormally from this `match`, e.g. on `Err`, on
1868
417
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
417
                        match ret {
1870
417
                            Err(panic) => CallResult::Panic(panic),
1871
417
                            Ok(ret) => {
1872
417
                                // Because the wrapped function is not `unsafe`, we
1873
417
                                // can't assume it returned a value that is
1874
417
                                // compatible with this store.
1875
417
                                if !ret.compatible_with_store(caller.store.0) {
1876
417
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
417
                                } else {
1878
417
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
417
                                        Ok(val) => CallResult::Ok(val),
1880
417
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
417
                                    }
1882
417
                                }
1883
417
1884
417
                            }
1885
417
                        }
1886
417
                    });
1887
417
1888
417
                    match result {
1889
417
                        CallResult::Ok(val) => val,
1890
417
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
417
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
417
                    }
1893
417
                }
1894
417
1895
417
                /// This trampoline allows host code to indirectly call the
1896
417
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
417
                /// happens to reference our wrapped function).
1898
417
                ///
1899
417
                /// It reads the arguments out of the incoming `args` array,
1900
417
                /// calls the given function pointer, and then stores the result
1901
417
                /// back into the `args` array.
1902
417
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
417
                    callee_vmctx: *mut VMOpaqueContext,
1904
417
                    caller_vmctx: *mut VMContext,
1905
417
                    ptr: *const VMFunctionBody,
1906
417
                    args: *mut ValRaw,
1907
417
                )
1908
417
                where
1909
417
                    $($args: WasmTy,)*
1910
417
                    R: WasmRet,
1911
417
                {
1912
417
                    let ptr = mem::transmute::<
1913
417
                        *const VMFunctionBody,
1914
417
                        unsafe extern "C" fn(
1915
417
                            *mut VMOpaqueContext,
1916
417
                            *mut VMContext,
1917
417
                            $( $args::Abi, )*
1918
417
                            R::Retptr,
1919
417
                        ) -> R::Abi,
1920
417
                    >(ptr);
1921
417
1922
417
                    let mut _n = 0;
1923
417
                    $(
1924
417
                        let $args = $args::abi_from_raw(args.add(_n));
1925
417
                        _n += 1;
1926
417
                    )*
1927
417
                    R::wrap_trampoline(args, |retptr| {
1928
417
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
417
                    });
1930
417
                }
1931
417
1932
417
                let ty = R::func_type(
1933
417
                    None::<ValType>.into_iter()
1934
417
                        $(.chain(Some($args::valtype())))*
1935
417
                );
1936
417
1937
417
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
417
1939
417
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
417
1941
417
                let ctx = unsafe {
1942
417
                    VMHostFuncContext::new(
1943
417
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
417
                        shared_signature_id,
1945
417
                        Box::new(self),
1946
417
                    )
1947
417
                };
1948
417
1949
417
                (ctx, shared_signature_id, trampoline)
1950
417
            }
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::out::network::NetworkContext, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::context<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
417
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
417
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
417
                /// calls the wrapped host function, and returns the translated
1807
417
                /// result back to Wasm.
1808
417
                ///
1809
417
                /// Note that this shim's ABI must *exactly* match that expected
1810
417
                /// by Cranelift, since Cranelift is generating raw function
1811
417
                /// calls directly to this function.
1812
417
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
417
                    vmctx: *mut VMOpaqueContext,
1814
417
                    caller_vmctx: *mut VMContext,
1815
417
                    $( $args: $args::Abi, )*
1816
417
                    retptr: R::Retptr,
1817
417
                ) -> R::Abi
1818
417
                where
1819
417
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
417
                    $( $args: WasmTy, )*
1821
417
                    R: WasmRet,
1822
417
                {
1823
417
                    enum CallResult<U> {
1824
417
                        Ok(U),
1825
417
                        Trap(anyhow::Error),
1826
417
                        Panic(Box<dyn std::any::Any + Send>),
1827
417
                    }
1828
417
1829
417
                    // Note that this `result` is intentionally scoped into a
1830
417
                    // separate block. Handling traps and panics will involve
1831
417
                    // longjmp-ing from this function which means we won't run
1832
417
                    // destructors. As a result anything requiring a destructor
1833
417
                    // should be part of this block, and the long-jmp-ing
1834
417
                    // happens after the block in handling `CallResult`.
1835
417
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
417
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
417
                        let state = (*vmctx).host_state();
1838
417
1839
417
                        // Double-check ourselves in debug mode, but we control
1840
417
                        // the `Any` here so an unsafe downcast should also
1841
417
                        // work.
1842
417
                        debug_assert!(state.is::<F>());
1843
417
                        let func = &*(state as *const _ as *const F);
1844
417
1845
417
                        let ret = {
1846
417
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
417
                                    return R::fallible_from_trap(trap);
1849
417
                                }
1850
417
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
417
                                let r = func(
1852
417
                                    caller.sub_caller(),
1853
417
                                    $( $args, )*
1854
417
                                );
1855
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
417
                                    return R::fallible_from_trap(trap);
1857
417
                                }
1858
417
                                r.into_fallible()
1859
417
                            }))
1860
417
                        };
1861
417
1862
417
                        // Note that we need to be careful when dealing with traps
1863
417
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
417
                        // that it's not unwinding and consequently no Rust
1865
417
                        // destructors are run. We need to be careful to ensure that
1866
417
                        // nothing on the stack needs a destructor when we exit
1867
417
                        // abnormally from this `match`, e.g. on `Err`, on
1868
417
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
417
                        match ret {
1870
417
                            Err(panic) => CallResult::Panic(panic),
1871
417
                            Ok(ret) => {
1872
417
                                // Because the wrapped function is not `unsafe`, we
1873
417
                                // can't assume it returned a value that is
1874
417
                                // compatible with this store.
1875
417
                                if !ret.compatible_with_store(caller.store.0) {
1876
417
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
417
                                } else {
1878
417
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
417
                                        Ok(val) => CallResult::Ok(val),
1880
417
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
417
                                    }
1882
417
                                }
1883
417
1884
417
                            }
1885
417
                        }
1886
417
                    });
1887
417
1888
417
                    match result {
1889
417
                        CallResult::Ok(val) => val,
1890
417
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
417
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
417
                    }
1893
417
                }
1894
417
1895
417
                /// This trampoline allows host code to indirectly call the
1896
417
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
417
                /// happens to reference our wrapped function).
1898
417
                ///
1899
417
                /// It reads the arguments out of the incoming `args` array,
1900
417
                /// calls the given function pointer, and then stores the result
1901
417
                /// back into the `args` array.
1902
417
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
417
                    callee_vmctx: *mut VMOpaqueContext,
1904
417
                    caller_vmctx: *mut VMContext,
1905
417
                    ptr: *const VMFunctionBody,
1906
417
                    args: *mut ValRaw,
1907
417
                )
1908
417
                where
1909
417
                    $($args: WasmTy,)*
1910
417
                    R: WasmRet,
1911
417
                {
1912
417
                    let ptr = mem::transmute::<
1913
417
                        *const VMFunctionBody,
1914
417
                        unsafe extern "C" fn(
1915
417
                            *mut VMOpaqueContext,
1916
417
                            *mut VMContext,
1917
417
                            $( $args::Abi, )*
1918
417
                            R::Retptr,
1919
417
                        ) -> R::Abi,
1920
417
                    >(ptr);
1921
417
1922
417
                    let mut _n = 0;
1923
417
                    $(
1924
417
                        let $args = $args::abi_from_raw(args.add(_n));
1925
417
                        _n += 1;
1926
417
                    )*
1927
417
                    R::wrap_trampoline(args, |retptr| {
1928
417
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
417
                    });
1930
417
                }
1931
417
1932
417
                let ty = R::func_type(
1933
417
                    None::<ValType>.into_iter()
1934
417
                        $(.chain(Some($args::valtype())))*
1935
417
                );
1936
417
1937
417
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
417
1939
417
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
417
1941
417
                let ctx = unsafe {
1942
417
                    VMHostFuncContext::new(
1943
417
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
417
                        shared_signature_id,
1945
417
                        Box::new(self),
1946
417
                    )
1947
417
                };
1948
417
1949
417
                (ctx, shared_signature_id, trampoline)
1950
417
            }
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, i64, u32, u32), core::result::Result<[u8; 32], fvm::kernel::error::ExecutionError>, fvm::syscalls::rand::get_chain_randomness<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, i64, i64, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::log<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_actor_code_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u64, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
417
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
417
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
417
                /// calls the wrapped host function, and returns the translated
1807
417
                /// result back to Wasm.
1808
417
                ///
1809
417
                /// Note that this shim's ABI must *exactly* match that expected
1810
417
                /// by Cranelift, since Cranelift is generating raw function
1811
417
                /// calls directly to this function.
1812
417
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
417
                    vmctx: *mut VMOpaqueContext,
1814
417
                    caller_vmctx: *mut VMContext,
1815
417
                    $( $args: $args::Abi, )*
1816
417
                    retptr: R::Retptr,
1817
417
                ) -> R::Abi
1818
417
                where
1819
417
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
417
                    $( $args: WasmTy, )*
1821
417
                    R: WasmRet,
1822
417
                {
1823
417
                    enum CallResult<U> {
1824
417
                        Ok(U),
1825
417
                        Trap(anyhow::Error),
1826
417
                        Panic(Box<dyn std::any::Any + Send>),
1827
417
                    }
1828
417
1829
417
                    // Note that this `result` is intentionally scoped into a
1830
417
                    // separate block. Handling traps and panics will involve
1831
417
                    // longjmp-ing from this function which means we won't run
1832
417
                    // destructors. As a result anything requiring a destructor
1833
417
                    // should be part of this block, and the long-jmp-ing
1834
417
                    // happens after the block in handling `CallResult`.
1835
417
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
417
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
417
                        let state = (*vmctx).host_state();
1838
417
1839
417
                        // Double-check ourselves in debug mode, but we control
1840
417
                        // the `Any` here so an unsafe downcast should also
1841
417
                        // work.
1842
417
                        debug_assert!(state.is::<F>());
1843
417
                        let func = &*(state as *const _ as *const F);
1844
417
1845
417
                        let ret = {
1846
417
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
417
                                    return R::fallible_from_trap(trap);
1849
417
                                }
1850
417
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
417
                                let r = func(
1852
417
                                    caller.sub_caller(),
1853
417
                                    $( $args, )*
1854
417
                                );
1855
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
417
                                    return R::fallible_from_trap(trap);
1857
417
                                }
1858
417
                                r.into_fallible()
1859
417
                            }))
1860
417
                        };
1861
417
1862
417
                        // Note that we need to be careful when dealing with traps
1863
417
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
417
                        // that it's not unwinding and consequently no Rust
1865
417
                        // destructors are run. We need to be careful to ensure that
1866
417
                        // nothing on the stack needs a destructor when we exit
1867
417
                        // abnormally from this `match`, e.g. on `Err`, on
1868
417
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
417
                        match ret {
1870
417
                            Err(panic) => CallResult::Panic(panic),
1871
417
                            Ok(ret) => {
1872
417
                                // Because the wrapped function is not `unsafe`, we
1873
417
                                // can't assume it returned a value that is
1874
417
                                // compatible with this store.
1875
417
                                if !ret.compatible_with_store(caller.store.0) {
1876
417
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
417
                                } else {
1878
417
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
417
                                        Ok(val) => CallResult::Ok(val),
1880
417
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
417
                                    }
1882
417
                                }
1883
417
1884
417
                            }
1885
417
                        }
1886
417
                    });
1887
417
1888
417
                    match result {
1889
417
                        CallResult::Ok(val) => val,
1890
417
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
417
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
417
                    }
1893
417
                }
1894
417
1895
417
                /// This trampoline allows host code to indirectly call the
1896
417
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
417
                /// happens to reference our wrapped function).
1898
417
                ///
1899
417
                /// It reads the arguments out of the incoming `args` array,
1900
417
                /// calls the given function pointer, and then stores the result
1901
417
                /// back into the `args` array.
1902
417
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
417
                    callee_vmctx: *mut VMOpaqueContext,
1904
417
                    caller_vmctx: *mut VMContext,
1905
417
                    ptr: *const VMFunctionBody,
1906
417
                    args: *mut ValRaw,
1907
417
                )
1908
417
                where
1909
417
                    $($args: WasmTy,)*
1910
417
                    R: WasmRet,
1911
417
                {
1912
417
                    let ptr = mem::transmute::<
1913
417
                        *const VMFunctionBody,
1914
417
                        unsafe extern "C" fn(
1915
417
                            *mut VMOpaqueContext,
1916
417
                            *mut VMContext,
1917
417
                            $( $args::Abi, )*
1918
417
                            R::Retptr,
1919
417
                        ) -> R::Abi,
1920
417
                    >(ptr);
1921
417
1922
417
                    let mut _n = 0;
1923
417
                    $(
1924
417
                        let $args = $args::abi_from_raw(args.add(_n));
1925
417
                        _n += 1;
1926
417
                    )*
1927
417
                    R::wrap_trampoline(args, |retptr| {
1928
417
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
417
                    });
1930
417
                }
1931
417
1932
417
                let ty = R::func_type(
1933
417
                    None::<ValType>.into_iter()
1934
417
                        $(.chain(Some($args::valtype())))*
1935
417
                );
1936
417
1937
417
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
417
1939
417
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
417
1941
417
                let ctx = unsafe {
1942
417
                    VMHostFuncContext::new(
1943
417
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
417
                        shared_signature_id,
1945
417
                        Box::new(self),
1946
417
                    )
1947
417
                };
1948
417
1949
417
                (ctx, shared_signature_id, trampoline)
1950
417
            }
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::set_root<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
417
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
417
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
417
                /// calls the wrapped host function, and returns the translated
1807
417
                /// result back to Wasm.
1808
417
                ///
1809
417
                /// Note that this shim's ABI must *exactly* match that expected
1810
417
                /// by Cranelift, since Cranelift is generating raw function
1811
417
                /// calls directly to this function.
1812
417
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
417
                    vmctx: *mut VMOpaqueContext,
1814
417
                    caller_vmctx: *mut VMContext,
1815
417
                    $( $args: $args::Abi, )*
1816
417
                    retptr: R::Retptr,
1817
417
                ) -> R::Abi
1818
417
                where
1819
417
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
417
                    $( $args: WasmTy, )*
1821
417
                    R: WasmRet,
1822
417
                {
1823
417
                    enum CallResult<U> {
1824
417
                        Ok(U),
1825
417
                        Trap(anyhow::Error),
1826
417
                        Panic(Box<dyn std::any::Any + Send>),
1827
417
                    }
1828
417
1829
417
                    // Note that this `result` is intentionally scoped into a
1830
417
                    // separate block. Handling traps and panics will involve
1831
417
                    // longjmp-ing from this function which means we won't run
1832
417
                    // destructors. As a result anything requiring a destructor
1833
417
                    // should be part of this block, and the long-jmp-ing
1834
417
                    // happens after the block in handling `CallResult`.
1835
417
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
417
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
417
                        let state = (*vmctx).host_state();
1838
417
1839
417
                        // Double-check ourselves in debug mode, but we control
1840
417
                        // the `Any` here so an unsafe downcast should also
1841
417
                        // work.
1842
417
                        debug_assert!(state.is::<F>());
1843
417
                        let func = &*(state as *const _ as *const F);
1844
417
1845
417
                        let ret = {
1846
417
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
417
                                    return R::fallible_from_trap(trap);
1849
417
                                }
1850
417
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
417
                                let r = func(
1852
417
                                    caller.sub_caller(),
1853
417
                                    $( $args, )*
1854
417
                                );
1855
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
417
                                    return R::fallible_from_trap(trap);
1857
417
                                }
1858
417
                                r.into_fallible()
1859
417
                            }))
1860
417
                        };
1861
417
1862
417
                        // Note that we need to be careful when dealing with traps
1863
417
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
417
                        // that it's not unwinding and consequently no Rust
1865
417
                        // destructors are run. We need to be careful to ensure that
1866
417
                        // nothing on the stack needs a destructor when we exit
1867
417
                        // abnormally from this `match`, e.g. on `Err`, on
1868
417
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
417
                        match ret {
1870
417
                            Err(panic) => CallResult::Panic(panic),
1871
417
                            Ok(ret) => {
1872
417
                                // Because the wrapped function is not `unsafe`, we
1873
417
                                // can't assume it returned a value that is
1874
417
                                // compatible with this store.
1875
417
                                if !ret.compatible_with_store(caller.store.0) {
1876
417
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
417
                                } else {
1878
417
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
417
                                        Ok(val) => CallResult::Ok(val),
1880
417
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
417
                                    }
1882
417
                                }
1883
417
1884
417
                            }
1885
417
                        }
1886
417
                    });
1887
417
1888
417
                    match result {
1889
417
                        CallResult::Ok(val) => val,
1890
417
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
417
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
417
                    }
1893
417
                }
1894
417
1895
417
                /// This trampoline allows host code to indirectly call the
1896
417
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
417
                /// happens to reference our wrapped function).
1898
417
                ///
1899
417
                /// It reads the arguments out of the incoming `args` array,
1900
417
                /// calls the given function pointer, and then stores the result
1901
417
                /// back into the `args` array.
1902
417
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
417
                    callee_vmctx: *mut VMOpaqueContext,
1904
417
                    caller_vmctx: *mut VMContext,
1905
417
                    ptr: *const VMFunctionBody,
1906
417
                    args: *mut ValRaw,
1907
417
                )
1908
417
                where
1909
417
                    $($args: WasmTy,)*
1910
417
                    R: WasmRet,
1911
417
                {
1912
417
                    let ptr = mem::transmute::<
1913
417
                        *const VMFunctionBody,
1914
417
                        unsafe extern "C" fn(
1915
417
                            *mut VMOpaqueContext,
1916
417
                            *mut VMContext,
1917
417
                            $( $args::Abi, )*
1918
417
                            R::Retptr,
1919
417
                        ) -> R::Abi,
1920
417
                    >(ptr);
1921
417
1922
417
                    let mut _n = 0;
1923
417
                    $(
1924
417
                        let $args = $args::abi_from_raw(args.add(_n));
1925
417
                        _n += 1;
1926
417
                    )*
1927
417
                    R::wrap_trampoline(args, |retptr| {
1928
417
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
417
                    });
1930
417
                }
1931
417
1932
417
                let ty = R::func_type(
1933
417
                    None::<ValType>.into_iter()
1934
417
                        $(.chain(Some($args::valtype())))*
1935
417
                );
1936
417
1937
417
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
417
1939
417
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
417
1941
417
                let ctx = unsafe {
1942
417
                    VMHostFuncContext::new(
1943
417
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
417
                        shared_signature_id,
1945
417
                        Box::new(self),
1946
417
                    )
1947
417
                };
1948
417
1949
417
                (ctx, shared_signature_id, trampoline)
1950
417
            }
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::total_fil_circ_supply<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>,), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<[u8; 65], fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::recover_secp_public_key<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
417
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
417
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
417
                /// calls the wrapped host function, and returns the translated
1807
417
                /// result back to Wasm.
1808
417
                ///
1809
417
                /// Note that this shim's ABI must *exactly* match that expected
1810
417
                /// by Cranelift, since Cranelift is generating raw function
1811
417
                /// calls directly to this function.
1812
417
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
417
                    vmctx: *mut VMOpaqueContext,
1814
417
                    caller_vmctx: *mut VMContext,
1815
417
                    $( $args: $args::Abi, )*
1816
417
                    retptr: R::Retptr,
1817
417
                ) -> R::Abi
1818
417
                where
1819
417
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
417
                    $( $args: WasmTy, )*
1821
417
                    R: WasmRet,
1822
417
                {
1823
417
                    enum CallResult<U> {
1824
417
                        Ok(U),
1825
417
                        Trap(anyhow::Error),
1826
417
                        Panic(Box<dyn std::any::Any + Send>),
1827
417
                    }
1828
417
1829
417
                    // Note that this `result` is intentionally scoped into a
1830
417
                    // separate block. Handling traps and panics will involve
1831
417
                    // longjmp-ing from this function which means we won't run
1832
417
                    // destructors. As a result anything requiring a destructor
1833
417
                    // should be part of this block, and the long-jmp-ing
1834
417
                    // happens after the block in handling `CallResult`.
1835
417
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
417
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
417
                        let state = (*vmctx).host_state();
1838
417
1839
417
                        // Double-check ourselves in debug mode, but we control
1840
417
                        // the `Any` here so an unsafe downcast should also
1841
417
                        // work.
1842
417
                        debug_assert!(state.is::<F>());
1843
417
                        let func = &*(state as *const _ as *const F);
1844
417
1845
417
                        let ret = {
1846
417
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
417
                                    return R::fallible_from_trap(trap);
1849
417
                                }
1850
417
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
417
                                let r = func(
1852
417
                                    caller.sub_caller(),
1853
417
                                    $( $args, )*
1854
417
                                );
1855
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
417
                                    return R::fallible_from_trap(trap);
1857
417
                                }
1858
417
                                r.into_fallible()
1859
417
                            }))
1860
417
                        };
1861
417
1862
417
                        // Note that we need to be careful when dealing with traps
1863
417
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
417
                        // that it's not unwinding and consequently no Rust
1865
417
                        // destructors are run. We need to be careful to ensure that
1866
417
                        // nothing on the stack needs a destructor when we exit
1867
417
                        // abnormally from this `match`, e.g. on `Err`, on
1868
417
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
417
                        match ret {
1870
417
                            Err(panic) => CallResult::Panic(panic),
1871
417
                            Ok(ret) => {
1872
417
                                // Because the wrapped function is not `unsafe`, we
1873
417
                                // can't assume it returned a value that is
1874
417
                                // compatible with this store.
1875
417
                                if !ret.compatible_with_store(caller.store.0) {
1876
417
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
417
                                } else {
1878
417
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
417
                                        Ok(val) => CallResult::Ok(val),
1880
417
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
417
                                    }
1882
417
                                }
1883
417
1884
417
                            }
1885
417
                        }
1886
417
                    });
1887
417
1888
417
                    match result {
1889
417
                        CallResult::Ok(val) => val,
1890
417
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
417
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
417
                    }
1893
417
                }
1894
417
1895
417
                /// This trampoline allows host code to indirectly call the
1896
417
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
417
                /// happens to reference our wrapped function).
1898
417
                ///
1899
417
                /// It reads the arguments out of the incoming `args` array,
1900
417
                /// calls the given function pointer, and then stores the result
1901
417
                /// back into the `args` array.
1902
417
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
417
                    callee_vmctx: *mut VMOpaqueContext,
1904
417
                    caller_vmctx: *mut VMContext,
1905
417
                    ptr: *const VMFunctionBody,
1906
417
                    args: *mut ValRaw,
1907
417
                )
1908
417
                where
1909
417
                    $($args: WasmTy,)*
1910
417
                    R: WasmRet,
1911
417
                {
1912
417
                    let ptr = mem::transmute::<
1913
417
                        *const VMFunctionBody,
1914
417
                        unsafe extern "C" fn(
1915
417
                            *mut VMOpaqueContext,
1916
417
                            *mut VMContext,
1917
417
                            $( $args::Abi, )*
1918
417
                            R::Retptr,
1919
417
                        ) -> R::Abi,
1920
417
                    >(ptr);
1921
417
1922
417
                    let mut _n = 0;
1923
417
                    $(
1924
417
                        let $args = $args::abi_from_raw(args.add(_n));
1925
417
                        _n += 1;
1926
417
                    )*
1927
417
                    R::wrap_trampoline(args, |retptr| {
1928
417
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
417
                    });
1930
417
                }
1931
417
1932
417
                let ty = R::func_type(
1933
417
                    None::<ValType>.into_iter()
1934
417
                        $(.chain(Some($args::valtype())))*
1935
417
                );
1936
417
1937
417
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
417
1939
417
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
417
1941
417
                let ctx = unsafe {
1942
417
                    VMHostFuncContext::new(
1943
417
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
417
                        shared_signature_id,
1945
417
                        Box::new(self),
1946
417
                    )
1947
417
                };
1948
417
1949
417
                (ctx, shared_signature_id, trampoline)
1950
417
            }
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, i64, u32, u32), core::result::Result<[u8; 32], fvm::kernel::error::ExecutionError>, fvm::syscalls::rand::get_beacon_randomness<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, i64, i64, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::tipset_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, i64, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
417
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
417
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
417
                /// calls the wrapped host function, and returns the translated
1807
417
                /// result back to Wasm.
1808
417
                ///
1809
417
                /// Note that this shim's ABI must *exactly* match that expected
1810
417
                /// by Cranelift, since Cranelift is generating raw function
1811
417
                /// calls directly to this function.
1812
417
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
417
                    vmctx: *mut VMOpaqueContext,
1814
417
                    caller_vmctx: *mut VMContext,
1815
417
                    $( $args: $args::Abi, )*
1816
417
                    retptr: R::Retptr,
1817
417
                ) -> R::Abi
1818
417
                where
1819
417
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
417
                    $( $args: WasmTy, )*
1821
417
                    R: WasmRet,
1822
417
                {
1823
417
                    enum CallResult<U> {
1824
417
                        Ok(U),
1825
417
                        Trap(anyhow::Error),
1826
417
                        Panic(Box<dyn std::any::Any + Send>),
1827
417
                    }
1828
417
1829
417
                    // Note that this `result` is intentionally scoped into a
1830
417
                    // separate block. Handling traps and panics will involve
1831
417
                    // longjmp-ing from this function which means we won't run
1832
417
                    // destructors. As a result anything requiring a destructor
1833
417
                    // should be part of this block, and the long-jmp-ing
1834
417
                    // happens after the block in handling `CallResult`.
1835
417
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
417
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
417
                        let state = (*vmctx).host_state();
1838
417
1839
417
                        // Double-check ourselves in debug mode, but we control
1840
417
                        // the `Any` here so an unsafe downcast should also
1841
417
                        // work.
1842
417
                        debug_assert!(state.is::<F>());
1843
417
                        let func = &*(state as *const _ as *const F);
1844
417
1845
417
                        let ret = {
1846
417
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
417
                                    return R::fallible_from_trap(trap);
1849
417
                                }
1850
417
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
417
                                let r = func(
1852
417
                                    caller.sub_caller(),
1853
417
                                    $( $args, )*
1854
417
                                );
1855
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
417
                                    return R::fallible_from_trap(trap);
1857
417
                                }
1858
417
                                r.into_fallible()
1859
417
                            }))
1860
417
                        };
1861
417
1862
417
                        // Note that we need to be careful when dealing with traps
1863
417
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
417
                        // that it's not unwinding and consequently no Rust
1865
417
                        // destructors are run. We need to be careful to ensure that
1866
417
                        // nothing on the stack needs a destructor when we exit
1867
417
                        // abnormally from this `match`, e.g. on `Err`, on
1868
417
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
417
                        match ret {
1870
417
                            Err(panic) => CallResult::Panic(panic),
1871
417
                            Ok(ret) => {
1872
417
                                // Because the wrapped function is not `unsafe`, we
1873
417
                                // can't assume it returned a value that is
1874
417
                                // compatible with this store.
1875
417
                                if !ret.compatible_with_store(caller.store.0) {
1876
417
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
417
                                } else {
1878
417
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
417
                                        Ok(val) => CallResult::Ok(val),
1880
417
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
417
                                    }
1882
417
                                }
1883
417
1884
417
                            }
1885
417
                        }
1886
417
                    });
1887
417
1888
417
                    match result {
1889
417
                        CallResult::Ok(val) => val,
1890
417
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
417
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
417
                    }
1893
417
                }
1894
417
1895
417
                /// This trampoline allows host code to indirectly call the
1896
417
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
417
                /// happens to reference our wrapped function).
1898
417
                ///
1899
417
                /// It reads the arguments out of the incoming `args` array,
1900
417
                /// calls the given function pointer, and then stores the result
1901
417
                /// back into the `args` array.
1902
417
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
417
                    callee_vmctx: *mut VMOpaqueContext,
1904
417
                    caller_vmctx: *mut VMContext,
1905
417
                    ptr: *const VMFunctionBody,
1906
417
                    args: *mut ValRaw,
1907
417
                )
1908
417
                where
1909
417
                    $($args: WasmTy,)*
1910
417
                    R: WasmRet,
1911
417
                {
1912
417
                    let ptr = mem::transmute::<
1913
417
                        *const VMFunctionBody,
1914
417
                        unsafe extern "C" fn(
1915
417
                            *mut VMOpaqueContext,
1916
417
                            *mut VMContext,
1917
417
                            $( $args::Abi, )*
1918
417
                            R::Retptr,
1919
417
                        ) -> R::Abi,
1920
417
                    >(ptr);
1921
417
1922
417
                    let mut _n = 0;
1923
417
                    $(
1924
417
                        let $args = $args::abi_from_raw(args.add(_n));
1925
417
                        _n += 1;
1926
417
                    )*
1927
417
                    R::wrap_trampoline(args, |retptr| {
1928
417
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
417
                    });
1930
417
                }
1931
417
1932
417
                let ty = R::func_type(
1933
417
                    None::<ValType>.into_iter()
1934
417
                        $(.chain(Some($args::valtype())))*
1935
417
                );
1936
417
1937
417
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
417
1939
417
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
417
1941
417
                let ctx = unsafe {
1942
417
                    VMHostFuncContext::new(
1943
417
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
417
                        shared_signature_id,
1945
417
                        Box::new(self),
1946
417
                    )
1947
417
                };
1948
417
1949
417
                (ctx, shared_signature_id, trampoline)
1950
417
            }
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_seal<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::self_destruct<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
417
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
417
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
417
                /// calls the wrapped host function, and returns the translated
1807
417
                /// result back to Wasm.
1808
417
                ///
1809
417
                /// Note that this shim's ABI must *exactly* match that expected
1810
417
                /// by Cranelift, since Cranelift is generating raw function
1811
417
                /// calls directly to this function.
1812
417
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
417
                    vmctx: *mut VMOpaqueContext,
1814
417
                    caller_vmctx: *mut VMContext,
1815
417
                    $( $args: $args::Abi, )*
1816
417
                    retptr: R::Retptr,
1817
417
                ) -> R::Abi
1818
417
                where
1819
417
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
417
                    $( $args: WasmTy, )*
1821
417
                    R: WasmRet,
1822
417
                {
1823
417
                    enum CallResult<U> {
1824
417
                        Ok(U),
1825
417
                        Trap(anyhow::Error),
1826
417
                        Panic(Box<dyn std::any::Any + Send>),
1827
417
                    }
1828
417
1829
417
                    // Note that this `result` is intentionally scoped into a
1830
417
                    // separate block. Handling traps and panics will involve
1831
417
                    // longjmp-ing from this function which means we won't run
1832
417
                    // destructors. As a result anything requiring a destructor
1833
417
                    // should be part of this block, and the long-jmp-ing
1834
417
                    // happens after the block in handling `CallResult`.
1835
417
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
417
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
417
                        let state = (*vmctx).host_state();
1838
417
1839
417
                        // Double-check ourselves in debug mode, but we control
1840
417
                        // the `Any` here so an unsafe downcast should also
1841
417
                        // work.
1842
417
                        debug_assert!(state.is::<F>());
1843
417
                        let func = &*(state as *const _ as *const F);
1844
417
1845
417
                        let ret = {
1846
417
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
417
                                    return R::fallible_from_trap(trap);
1849
417
                                }
1850
417
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
417
                                let r = func(
1852
417
                                    caller.sub_caller(),
1853
417
                                    $( $args, )*
1854
417
                                );
1855
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
417
                                    return R::fallible_from_trap(trap);
1857
417
                                }
1858
417
                                r.into_fallible()
1859
417
                            }))
1860
417
                        };
1861
417
1862
417
                        // Note that we need to be careful when dealing with traps
1863
417
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
417
                        // that it's not unwinding and consequently no Rust
1865
417
                        // destructors are run. We need to be careful to ensure that
1866
417
                        // nothing on the stack needs a destructor when we exit
1867
417
                        // abnormally from this `match`, e.g. on `Err`, on
1868
417
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
417
                        match ret {
1870
417
                            Err(panic) => CallResult::Panic(panic),
1871
417
                            Ok(ret) => {
1872
417
                                // Because the wrapped function is not `unsafe`, we
1873
417
                                // can't assume it returned a value that is
1874
417
                                // compatible with this store.
1875
417
                                if !ret.compatible_with_store(caller.store.0) {
1876
417
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
417
                                } else {
1878
417
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
417
                                        Ok(val) => CallResult::Ok(val),
1880
417
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
417
                                    }
1882
417
                                }
1883
417
1884
417
                            }
1885
417
                        }
1886
417
                    });
1887
417
1888
417
                    match result {
1889
417
                        CallResult::Ok(val) => val,
1890
417
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
417
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
417
                    }
1893
417
                }
1894
417
1895
417
                /// This trampoline allows host code to indirectly call the
1896
417
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
417
                /// happens to reference our wrapped function).
1898
417
                ///
1899
417
                /// It reads the arguments out of the incoming `args` array,
1900
417
                /// calls the given function pointer, and then stores the result
1901
417
                /// back into the `args` array.
1902
417
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
417
                    callee_vmctx: *mut VMOpaqueContext,
1904
417
                    caller_vmctx: *mut VMContext,
1905
417
                    ptr: *const VMFunctionBody,
1906
417
                    args: *mut ValRaw,
1907
417
                )
1908
417
                where
1909
417
                    $($args: WasmTy,)*
1910
417
                    R: WasmRet,
1911
417
                {
1912
417
                    let ptr = mem::transmute::<
1913
417
                        *const VMFunctionBody,
1914
417
                        unsafe extern "C" fn(
1915
417
                            *mut VMOpaqueContext,
1916
417
                            *mut VMContext,
1917
417
                            $( $args::Abi, )*
1918
417
                            R::Retptr,
1919
417
                        ) -> R::Abi,
1920
417
                    >(ptr);
1921
417
1922
417
                    let mut _n = 0;
1923
417
                    $(
1924
417
                        let $args = $args::abi_from_raw(args.add(_n));
1925
417
                        _n += 1;
1926
417
                    )*
1927
417
                    R::wrap_trampoline(args, |retptr| {
1928
417
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
417
                    });
1930
417
                }
1931
417
1932
417
                let ty = R::func_type(
1933
417
                    None::<ValType>.into_iter()
1934
417
                        $(.chain(Some($args::valtype())))*
1935
417
                );
1936
417
1937
417
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
417
1939
417
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
417
1941
417
                let ctx = unsafe {
1942
417
                    VMHostFuncContext::new(
1943
417
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
417
                        shared_signature_id,
1945
417
                        Box::new(self),
1946
417
                    )
1947
417
                };
1948
417
1949
417
                (ctx, shared_signature_id, trampoline)
1950
417
            }
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64,), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::balance_of<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u64), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::enabled<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>,), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_post<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
417
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
417
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
417
                /// calls the wrapped host function, and returns the translated
1807
417
                /// result back to Wasm.
1808
417
                ///
1809
417
                /// Note that this shim's ABI must *exactly* match that expected
1810
417
                /// by Cranelift, since Cranelift is generating raw function
1811
417
                /// calls directly to this function.
1812
417
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
417
                    vmctx: *mut VMOpaqueContext,
1814
417
                    caller_vmctx: *mut VMContext,
1815
417
                    $( $args: $args::Abi, )*
1816
417
                    retptr: R::Retptr,
1817
417
                ) -> R::Abi
1818
417
                where
1819
417
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
417
                    $( $args: WasmTy, )*
1821
417
                    R: WasmRet,
1822
417
                {
1823
417
                    enum CallResult<U> {
1824
417
                        Ok(U),
1825
417
                        Trap(anyhow::Error),
1826
417
                        Panic(Box<dyn std::any::Any + Send>),
1827
417
                    }
1828
417
1829
417
                    // Note that this `result` is intentionally scoped into a
1830
417
                    // separate block. Handling traps and panics will involve
1831
417
                    // longjmp-ing from this function which means we won't run
1832
417
                    // destructors. As a result anything requiring a destructor
1833
417
                    // should be part of this block, and the long-jmp-ing
1834
417
                    // happens after the block in handling `CallResult`.
1835
417
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
417
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
417
                        let state = (*vmctx).host_state();
1838
417
1839
417
                        // Double-check ourselves in debug mode, but we control
1840
417
                        // the `Any` here so an unsafe downcast should also
1841
417
                        // work.
1842
417
                        debug_assert!(state.is::<F>());
1843
417
                        let func = &*(state as *const _ as *const F);
1844
417
1845
417
                        let ret = {
1846
417
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
417
                                    return R::fallible_from_trap(trap);
1849
417
                                }
1850
417
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
417
                                let r = func(
1852
417
                                    caller.sub_caller(),
1853
417
                                    $( $args, )*
1854
417
                                );
1855
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
417
                                    return R::fallible_from_trap(trap);
1857
417
                                }
1858
417
                                r.into_fallible()
1859
417
                            }))
1860
417
                        };
1861
417
1862
417
                        // Note that we need to be careful when dealing with traps
1863
417
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
417
                        // that it's not unwinding and consequently no Rust
1865
417
                        // destructors are run. We need to be careful to ensure that
1866
417
                        // nothing on the stack needs a destructor when we exit
1867
417
                        // abnormally from this `match`, e.g. on `Err`, on
1868
417
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
417
                        match ret {
1870
417
                            Err(panic) => CallResult::Panic(panic),
1871
417
                            Ok(ret) => {
1872
417
                                // Because the wrapped function is not `unsafe`, we
1873
417
                                // can't assume it returned a value that is
1874
417
                                // compatible with this store.
1875
417
                                if !ret.compatible_with_store(caller.store.0) {
1876
417
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
417
                                } else {
1878
417
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
417
                                        Ok(val) => CallResult::Ok(val),
1880
417
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
417
                                    }
1882
417
                                }
1883
417
1884
417
                            }
1885
417
                        }
1886
417
                    });
1887
417
1888
417
                    match result {
1889
417
                        CallResult::Ok(val) => val,
1890
417
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
417
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
417
                    }
1893
417
                }
1894
417
1895
417
                /// This trampoline allows host code to indirectly call the
1896
417
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
417
                /// happens to reference our wrapped function).
1898
417
                ///
1899
417
                /// It reads the arguments out of the incoming `args` array,
1900
417
                /// calls the given function pointer, and then stores the result
1901
417
                /// back into the `args` array.
1902
417
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
417
                    callee_vmctx: *mut VMOpaqueContext,
1904
417
                    caller_vmctx: *mut VMContext,
1905
417
                    ptr: *const VMFunctionBody,
1906
417
                    args: *mut ValRaw,
1907
417
                )
1908
417
                where
1909
417
                    $($args: WasmTy,)*
1910
417
                    R: WasmRet,
1911
417
                {
1912
417
                    let ptr = mem::transmute::<
1913
417
                        *const VMFunctionBody,
1914
417
                        unsafe extern "C" fn(
1915
417
                            *mut VMOpaqueContext,
1916
417
                            *mut VMContext,
1917
417
                            $( $args::Abi, )*
1918
417
                            R::Retptr,
1919
417
                        ) -> R::Abi,
1920
417
                    >(ptr);
1921
417
1922
417
                    let mut _n = 0;
1923
417
                    $(
1924
417
                        let $args = $args::abi_from_raw(args.add(_n));
1925
417
                        _n += 1;
1926
417
                    )*
1927
417
                    R::wrap_trampoline(args, |retptr| {
1928
417
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
417
                    });
1930
417
                }
1931
417
1932
417
                let ty = R::func_type(
1933
417
                    None::<ValType>.into_iter()
1934
417
                        $(.chain(Some($args::valtype())))*
1935
417
                );
1936
417
1937
417
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
417
1939
417
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
417
1941
417
                let ctx = unsafe {
1942
417
                    VMHostFuncContext::new(
1943
417
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
417
                        shared_signature_id,
1945
417
                        Box::new(self),
1946
417
                    )
1947
417
                };
1948
417
1949
417
                (ctx, shared_signature_id, trampoline)
1950
417
            }
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, i64, u32, u32), core::result::Result<[u8; 32], fvm::kernel::error::ExecutionError>, fvm::syscalls::rand::get_beacon_randomness<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, i64, i64, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
417
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
417
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
417
                /// calls the wrapped host function, and returns the translated
1807
417
                /// result back to Wasm.
1808
417
                ///
1809
417
                /// Note that this shim's ABI must *exactly* match that expected
1810
417
                /// by Cranelift, since Cranelift is generating raw function
1811
417
                /// calls directly to this function.
1812
417
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
417
                    vmctx: *mut VMOpaqueContext,
1814
417
                    caller_vmctx: *mut VMContext,
1815
417
                    $( $args: $args::Abi, )*
1816
417
                    retptr: R::Retptr,
1817
417
                ) -> R::Abi
1818
417
                where
1819
417
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
417
                    $( $args: WasmTy, )*
1821
417
                    R: WasmRet,
1822
417
                {
1823
417
                    enum CallResult<U> {
1824
417
                        Ok(U),
1825
417
                        Trap(anyhow::Error),
1826
417
                        Panic(Box<dyn std::any::Any + Send>),
1827
417
                    }
1828
417
1829
417
                    // Note that this `result` is intentionally scoped into a
1830
417
                    // separate block. Handling traps and panics will involve
1831
417
                    // longjmp-ing from this function which means we won't run
1832
417
                    // destructors. As a result anything requiring a destructor
1833
417
                    // should be part of this block, and the long-jmp-ing
1834
417
                    // happens after the block in handling `CallResult`.
1835
417
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
417
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
417
                        let state = (*vmctx).host_state();
1838
417
1839
417
                        // Double-check ourselves in debug mode, but we control
1840
417
                        // the `Any` here so an unsafe downcast should also
1841
417
                        // work.
1842
417
                        debug_assert!(state.is::<F>());
1843
417
                        let func = &*(state as *const _ as *const F);
1844
417
1845
417
                        let ret = {
1846
417
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
417
                                    return R::fallible_from_trap(trap);
1849
417
                                }
1850
417
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
417
                                let r = func(
1852
417
                                    caller.sub_caller(),
1853
417
                                    $( $args, )*
1854
417
                                );
1855
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
417
                                    return R::fallible_from_trap(trap);
1857
417
                                }
1858
417
                                r.into_fallible()
1859
417
                            }))
1860
417
                        };
1861
417
1862
417
                        // Note that we need to be careful when dealing with traps
1863
417
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
417
                        // that it's not unwinding and consequently no Rust
1865
417
                        // destructors are run. We need to be careful to ensure that
1866
417
                        // nothing on the stack needs a destructor when we exit
1867
417
                        // abnormally from this `match`, e.g. on `Err`, on
1868
417
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
417
                        match ret {
1870
417
                            Err(panic) => CallResult::Panic(panic),
1871
417
                            Ok(ret) => {
1872
417
                                // Because the wrapped function is not `unsafe`, we
1873
417
                                // can't assume it returned a value that is
1874
417
                                // compatible with this store.
1875
417
                                if !ret.compatible_with_store(caller.store.0) {
1876
417
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
417
                                } else {
1878
417
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
417
                                        Ok(val) => CallResult::Ok(val),
1880
417
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
417
                                    }
1882
417
                                }
1883
417
1884
417
                            }
1885
417
                        }
1886
417
                    });
1887
417
1888
417
                    match result {
1889
417
                        CallResult::Ok(val) => val,
1890
417
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
417
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
417
                    }
1893
417
                }
1894
417
1895
417
                /// This trampoline allows host code to indirectly call the
1896
417
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
417
                /// happens to reference our wrapped function).
1898
417
                ///
1899
417
                /// It reads the arguments out of the incoming `args` array,
1900
417
                /// calls the given function pointer, and then stores the result
1901
417
                /// back into the `args` array.
1902
417
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
417
                    callee_vmctx: *mut VMOpaqueContext,
1904
417
                    caller_vmctx: *mut VMContext,
1905
417
                    ptr: *const VMFunctionBody,
1906
417
                    args: *mut ValRaw,
1907
417
                )
1908
417
                where
1909
417
                    $($args: WasmTy,)*
1910
417
                    R: WasmRet,
1911
417
                {
1912
417
                    let ptr = mem::transmute::<
1913
417
                        *const VMFunctionBody,
1914
417
                        unsafe extern "C" fn(
1915
417
                            *mut VMOpaqueContext,
1916
417
                            *mut VMContext,
1917
417
                            $( $args::Abi, )*
1918
417
                            R::Retptr,
1919
417
                        ) -> R::Abi,
1920
417
                    >(ptr);
1921
417
1922
417
                    let mut _n = 0;
1923
417
                    $(
1924
417
                        let $args = $args::abi_from_raw(args.add(_n));
1925
417
                        _n += 1;
1926
417
                    )*
1927
417
                    R::wrap_trampoline(args, |retptr| {
1928
417
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
417
                    });
1930
417
                }
1931
417
1932
417
                let ty = R::func_type(
1933
417
                    None::<ValType>.into_iter()
1934
417
                        $(.chain(Some($args::valtype())))*
1935
417
                );
1936
417
1937
417
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
417
1939
417
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
417
1941
417
                let ctx = unsafe {
1942
417
                    VMHostFuncContext::new(
1943
417
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
417
                        shared_signature_id,
1945
417
                        Box::new(self),
1946
417
                    )
1947
417
                };
1948
417
1949
417
                (ctx, shared_signature_id, trampoline)
1950
417
            }
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u64, u32, u64, u64, u64, u64), core::result::Result<fvm_shared::sys::out::send::Send, fvm::kernel::error::ExecutionError>, fvm::syscalls::send::send<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, u64, u32, u64, u64, u64, u64), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
417
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
417
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
417
                /// calls the wrapped host function, and returns the translated
1807
417
                /// result back to Wasm.
1808
417
                ///
1809
417
                /// Note that this shim's ABI must *exactly* match that expected
1810
417
                /// by Cranelift, since Cranelift is generating raw function
1811
417
                /// calls directly to this function.
1812
417
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
417
                    vmctx: *mut VMOpaqueContext,
1814
417
                    caller_vmctx: *mut VMContext,
1815
417
                    $( $args: $args::Abi, )*
1816
417
                    retptr: R::Retptr,
1817
417
                ) -> R::Abi
1818
417
                where
1819
417
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
417
                    $( $args: WasmTy, )*
1821
417
                    R: WasmRet,
1822
417
                {
1823
417
                    enum CallResult<U> {
1824
417
                        Ok(U),
1825
417
                        Trap(anyhow::Error),
1826
417
                        Panic(Box<dyn std::any::Any + Send>),
1827
417
                    }
1828
417
1829
417
                    // Note that this `result` is intentionally scoped into a
1830
417
                    // separate block. Handling traps and panics will involve
1831
417
                    // longjmp-ing from this function which means we won't run
1832
417
                    // destructors. As a result anything requiring a destructor
1833
417
                    // should be part of this block, and the long-jmp-ing
1834
417
                    // happens after the block in handling `CallResult`.
1835
417
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
417
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
417
                        let state = (*vmctx).host_state();
1838
417
1839
417
                        // Double-check ourselves in debug mode, but we control
1840
417
                        // the `Any` here so an unsafe downcast should also
1841
417
                        // work.
1842
417
                        debug_assert!(state.is::<F>());
1843
417
                        let func = &*(state as *const _ as *const F);
1844
417
1845
417
                        let ret = {
1846
417
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
417
                                    return R::fallible_from_trap(trap);
1849
417
                                }
1850
417
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
417
                                let r = func(
1852
417
                                    caller.sub_caller(),
1853
417
                                    $( $args, )*
1854
417
                                );
1855
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
417
                                    return R::fallible_from_trap(trap);
1857
417
                                }
1858
417
                                r.into_fallible()
1859
417
                            }))
1860
417
                        };
1861
417
1862
417
                        // Note that we need to be careful when dealing with traps
1863
417
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
417
                        // that it's not unwinding and consequently no Rust
1865
417
                        // destructors are run. We need to be careful to ensure that
1866
417
                        // nothing on the stack needs a destructor when we exit
1867
417
                        // abnormally from this `match`, e.g. on `Err`, on
1868
417
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
417
                        match ret {
1870
417
                            Err(panic) => CallResult::Panic(panic),
1871
417
                            Ok(ret) => {
1872
417
                                // Because the wrapped function is not `unsafe`, we
1873
417
                                // can't assume it returned a value that is
1874
417
                                // compatible with this store.
1875
417
                                if !ret.compatible_with_store(caller.store.0) {
1876
417
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
417
                                } else {
1878
417
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
417
                                        Ok(val) => CallResult::Ok(val),
1880
417
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
417
                                    }
1882
417
                                }
1883
417
1884
417
                            }
1885
417
                        }
1886
417
                    });
1887
417
1888
417
                    match result {
1889
417
                        CallResult::Ok(val) => val,
1890
417
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
417
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
417
                    }
1893
417
                }
1894
417
1895
417
                /// This trampoline allows host code to indirectly call the
1896
417
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
417
                /// happens to reference our wrapped function).
1898
417
                ///
1899
417
                /// It reads the arguments out of the incoming `args` array,
1900
417
                /// calls the given function pointer, and then stores the result
1901
417
                /// back into the `args` array.
1902
417
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
417
                    callee_vmctx: *mut VMOpaqueContext,
1904
417
                    caller_vmctx: *mut VMContext,
1905
417
                    ptr: *const VMFunctionBody,
1906
417
                    args: *mut ValRaw,
1907
417
                )
1908
417
                where
1909
417
                    $($args: WasmTy,)*
1910
417
                    R: WasmRet,
1911
417
                {
1912
417
                    let ptr = mem::transmute::<
1913
417
                        *const VMFunctionBody,
1914
417
                        unsafe extern "C" fn(
1915
417
                            *mut VMOpaqueContext,
1916
417
                            *mut VMContext,
1917
417
                            $( $args::Abi, )*
1918
417
                            R::Retptr,
1919
417
                        ) -> R::Abi,
1920
417
                    >(ptr);
1921
417
1922
417
                    let mut _n = 0;
1923
417
                    $(
1924
417
                        let $args = $args::abi_from_raw(args.add(_n));
1925
417
                        _n += 1;
1926
417
                    )*
1927
417
                    R::wrap_trampoline(args, |retptr| {
1928
417
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
417
                    });
1930
417
                }
1931
417
1932
417
                let ty = R::func_type(
1933
417
                    None::<ValType>.into_iter()
1934
417
                        $(.chain(Some($args::valtype())))*
1935
417
                );
1936
417
1937
417
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
417
1939
417
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
417
1941
417
                let ctx = unsafe {
1942
417
                    VMHostFuncContext::new(
1943
417
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
417
                        shared_signature_id,
1945
417
                        Box::new(self),
1946
417
                    )
1947
417
                };
1948
417
1949
417
                (ctx, shared_signature_id, trampoline)
1950
417
            }
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u64, u32, u64, u64, u64, u64), core::result::Result<fvm_shared::sys::out::send::Send, fvm::kernel::error::ExecutionError>, fvm::syscalls::send::send<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u64, u32, u64, u64, u64, u64), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Unexecuted instantiation: <<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::store_artifact<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
<<wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64,), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::balance_of<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1} as wasmtime::func::IntoFunc<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u64), core::result::Result<u32, wasmtime::trap::Trap>>>::into_func
Line
Count
Source
1804
417
            fn into_func(self, engine: &Engine) -> (Box<VMHostFuncContext>, VMSharedSignatureIndex, VMTrampoline) {
1805
417
                /// This shim is called by Wasm code, constructs a `Caller`,
1806
417
                /// calls the wrapped host function, and returns the translated
1807
417
                /// result back to Wasm.
1808
417
                ///
1809
417
                /// Note that this shim's ABI must *exactly* match that expected
1810
417
                /// by Cranelift, since Cranelift is generating raw function
1811
417
                /// calls directly to this function.
1812
417
                unsafe extern "C" fn wasm_to_host_shim<T, F, $($args,)* R>(
1813
417
                    vmctx: *mut VMOpaqueContext,
1814
417
                    caller_vmctx: *mut VMContext,
1815
417
                    $( $args: $args::Abi, )*
1816
417
                    retptr: R::Retptr,
1817
417
                ) -> R::Abi
1818
417
                where
1819
417
                    F: Fn(Caller<'_, T>, $( $args ),*) -> R + 'static,
1820
417
                    $( $args: WasmTy, )*
1821
417
                    R: WasmRet,
1822
417
                {
1823
417
                    enum CallResult<U> {
1824
417
                        Ok(U),
1825
417
                        Trap(anyhow::Error),
1826
417
                        Panic(Box<dyn std::any::Any + Send>),
1827
417
                    }
1828
417
1829
417
                    // Note that this `result` is intentionally scoped into a
1830
417
                    // separate block. Handling traps and panics will involve
1831
417
                    // longjmp-ing from this function which means we won't run
1832
417
                    // destructors. As a result anything requiring a destructor
1833
417
                    // should be part of this block, and the long-jmp-ing
1834
417
                    // happens after the block in handling `CallResult`.
1835
417
                    let result = Caller::with(caller_vmctx, |mut caller| {
1836
417
                        let vmctx = VMHostFuncContext::from_opaque(vmctx);
1837
417
                        let state = (*vmctx).host_state();
1838
417
1839
417
                        // Double-check ourselves in debug mode, but we control
1840
417
                        // the `Any` here so an unsafe downcast should also
1841
417
                        // work.
1842
417
                        debug_assert!(state.is::<F>());
1843
417
                        let func = &*(state as *const _ as *const F);
1844
417
1845
417
                        let ret = {
1846
417
                            panic::catch_unwind(AssertUnwindSafe(|| {
1847
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::CallingHost) {
1848
417
                                    return R::fallible_from_trap(trap);
1849
417
                                }
1850
417
                                $(let $args = $args::from_abi($args, caller.store.0);)*
1851
417
                                let r = func(
1852
417
                                    caller.sub_caller(),
1853
417
                                    $( $args, )*
1854
417
                                );
1855
417
                                if let Err(trap) = caller.store.0.call_hook(CallHook::ReturningFromHost) {
1856
417
                                    return R::fallible_from_trap(trap);
1857
417
                                }
1858
417
                                r.into_fallible()
1859
417
                            }))
1860
417
                        };
1861
417
1862
417
                        // Note that we need to be careful when dealing with traps
1863
417
                        // here. Traps are implemented with longjmp/setjmp meaning
1864
417
                        // that it's not unwinding and consequently no Rust
1865
417
                        // destructors are run. We need to be careful to ensure that
1866
417
                        // nothing on the stack needs a destructor when we exit
1867
417
                        // abnormally from this `match`, e.g. on `Err`, on
1868
417
                        // cross-store-issues, or if `Ok(Err)` is raised.
1869
417
                        match ret {
1870
417
                            Err(panic) => CallResult::Panic(panic),
1871
417
                            Ok(ret) => {
1872
417
                                // Because the wrapped function is not `unsafe`, we
1873
417
                                // can't assume it returned a value that is
1874
417
                                // compatible with this store.
1875
417
                                if !ret.compatible_with_store(caller.store.0) {
1876
417
                                    CallResult::Trap(anyhow::anyhow!("host function attempted to return cross-`Store` value to Wasm"))
1877
417
                                } else {
1878
417
                                    match ret.into_abi_for_ret(caller.store.0, retptr) {
1879
417
                                        Ok(val) => CallResult::Ok(val),
1880
417
                                        Err(trap) => CallResult::Trap(trap.into()),
1881
417
                                    }
1882
417
                                }
1883
417
1884
417
                            }
1885
417
                        }
1886
417
                    });
1887
417
1888
417
                    match result {
1889
417
                        CallResult::Ok(val) => val,
1890
417
                        CallResult::Trap(trap) => raise_user_trap(trap),
1891
417
                        CallResult::Panic(panic) => wasmtime_runtime::resume_panic(panic),
1892
417
                    }
1893
417
                }
1894
417
1895
417
                /// This trampoline allows host code to indirectly call the
1896
417
                /// wrapped function (e.g. via `Func::call` on a `funcref` that
1897
417
                /// happens to reference our wrapped function).
1898
417
                ///
1899
417
                /// It reads the arguments out of the incoming `args` array,
1900
417
                /// calls the given function pointer, and then stores the result
1901
417
                /// back into the `args` array.
1902
417
                unsafe extern "C" fn host_to_wasm_trampoline<$($args,)* R>(
1903
417
                    callee_vmctx: *mut VMOpaqueContext,
1904
417
                    caller_vmctx: *mut VMContext,
1905
417
                    ptr: *const VMFunctionBody,
1906
417
                    args: *mut ValRaw,
1907
417
                )
1908
417
                where
1909
417
                    $($args: WasmTy,)*
1910
417
                    R: WasmRet,
1911
417
                {
1912
417
                    let ptr = mem::transmute::<
1913
417
                        *const VMFunctionBody,
1914
417
                        unsafe extern "C" fn(
1915
417
                            *mut VMOpaqueContext,
1916
417
                            *mut VMContext,
1917
417
                            $( $args::Abi, )*
1918
417
                            R::Retptr,
1919
417
                        ) -> R::Abi,
1920
417
                    >(ptr);
1921
417
1922
417
                    let mut _n = 0;
1923
417
                    $(
1924
417
                        let $args = $args::abi_from_raw(args.add(_n));
1925
417
                        _n += 1;
1926
417
                    )*
1927
417
                    R::wrap_trampoline(args, |retptr| {
1928
417
                        ptr(callee_vmctx, caller_vmctx, $( $args, )* retptr)
1929
417
                    });
1930
417
                }
1931
417
1932
417
                let ty = R::func_type(
1933
417
                    None::<ValType>.into_iter()
1934
417
                        $(.chain(Some($args::valtype())))*
1935
417
                );
1936
417
1937
417
                let shared_signature_id = engine.signatures().register(ty.as_wasm_func_type());
1938
417
1939
417
                let trampoline = host_to_wasm_trampoline::<$($args,)* R>;
1940
417
1941
417
                let ctx = unsafe {
1942
417
                    VMHostFuncContext::new(
1943
417
                        NonNull::new(wasm_to_host_shim::<T, F, $($args,)* R> as *mut _).unwrap(),
1944
417
                        shared_signature_id,
1945
417
                        Box::new(self),
1946
417
                    )
1947
417
                };
1948
417
1949
417
                (ctx, shared_signature_id, trampoline)
1950
417
            }
1951
        }
1952
    }
1953
}
1954
1955
0
for_each_function_signature!(impl_into_func);
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::enabled<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<fvm::syscalls::vm::Never, fvm::syscalls::error::Abort>, fvm::syscalls::vm::exit<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::total_fil_circ_supply<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<fvm_shared::sys::out::ipld::IpldOpen, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_open<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::create_actor<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::root<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_post<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::tipset_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<fvm_shared::sys::out::ipld::IpldStat, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_stat<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, i64, u32, u32), core::result::Result<[u8; 32], fvm::kernel::error::ExecutionError>, fvm::syscalls::rand::get_beacon_randomness<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, i64, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u64, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::resolve_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::create_actor<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::next_actor_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::total_fil_circ_supply<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, i64, u32, u32), core::result::Result<[u8; 32], fvm::kernel::error::ExecutionError>, fvm::syscalls::rand::get_chain_randomness<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, i64, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::set_root<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::host_to_wasm_trampoline::<core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u64, u32, u64, u64, u64, u64), core::result::Result<fvm_shared::sys::out::send::Send, fvm::kernel::error::ExecutionError>, fvm::syscalls::send::send<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u64, u32, u64, u64, u64, u64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::lookup_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u64, u32, u64, u64, u64, u64), core::result::Result<fvm_shared::sys::out::send::Send, fvm::kernel::error::ExecutionError>, fvm::syscalls::send::send<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u64, u32, u64, u64, u64, u64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_code_cid_for_type<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, i32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::batch_verify_seals<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::total_fil_circ_supply<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<u64, fvm::kernel::error::ExecutionError>, fvm::syscalls::gas::available<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, i64, u32, u32), core::result::Result<[u8; 32], fvm::kernel::error::ExecutionError>, fvm::syscalls::rand::get_beacon_randomness<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, i64, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::root<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_seal<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_create<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<fvm_shared::sys::out::ipld::IpldOpen, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_open<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_seal<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::set_root<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_replica_update<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_read<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::self_destruct<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::log<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_actor_code_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, u32, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::compute_unsealed_sector_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, i64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::event::emit_event<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_post<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_builtin_actor_type<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u64, u32, u64, u64, u64, u64), core::result::Result<fvm_shared::sys::out::send::Send, fvm::kernel::error::ExecutionError>, fvm::syscalls::send::send<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u64, u32, u64, u64, u64, u64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_builtin_actor_type<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::lookup_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, u32, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::compute_unsealed_sector_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, i64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_aggregate_seals<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_builtin_actor_type<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::out::vm::MessageContext, fvm::kernel::error::ExecutionError>, fvm::syscalls::vm::message_context<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::create_actor<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::root<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::lookup_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_create<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::hash<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::out::network::NetworkContext, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::context<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::self_destruct<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32, u32, u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_signature<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<i64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::event::emit_event<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::tipset_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<fvm_shared::sys::out::ipld::IpldStat, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_stat<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_code_cid_for_type<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, i32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::set_root<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_replica_update<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32, u32, u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_signature<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, i64, u32, u32), core::result::Result<[u8; 32], fvm::kernel::error::ExecutionError>, fvm::syscalls::rand::get_chain_randomness<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, i64, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::out::vm::MessageContext, fvm::kernel::error::ExecutionError>, fvm::syscalls::vm::message_context<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u32, u32, u64, u32, u64, u64, u64, u64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::hash<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_actor_code_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_read<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::out::network::NetworkContext, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::context<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::out::vm::MessageContext, fvm::kernel::error::ExecutionError>, fvm::syscalls::vm::message_context<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::batch_verify_seals<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, i64), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::gas::charge_gas<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, i64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, i64, u32, u32), core::result::Result<[u8; 32], fvm::kernel::error::ExecutionError>, fvm::syscalls::rand::get_chain_randomness<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, i64, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, i64, u32, u32), core::result::Result<[u8; 32], fvm::kernel::error::ExecutionError>, fvm::syscalls::rand::get_beacon_randomness<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, i64, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, i64, u32, u32), core::result::Result<[u8; 32], fvm::kernel::error::ExecutionError>, fvm::syscalls::rand::get_chain_randomness<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, i64, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<fvm_shared::sys::out::ipld::IpldOpen, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_open<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::host_to_wasm_trampoline::<i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::out::network::NetworkContext, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::context<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32, u32, u32), core::result::Result<fvm_shared::sys::out::crypto::VerifyConsensusFault, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_consensus_fault<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64,), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::balance_of<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u32, i64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_builtin_actor_type<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::out::vm::MessageContext, fvm::kernel::error::ExecutionError>, fvm::syscalls::vm::message_context<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64,), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::balance_of<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_seal<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u32, u64, u32, u64, u64, u64, u64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_code_cid_for_type<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, i32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_create<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_actor_code_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::next_actor_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<fvm::syscalls::vm::Never, fvm::syscalls::error::Abort>, fvm::syscalls::vm::exit<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_actor_code_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::hash<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, u32, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::compute_unsealed_sector_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, i64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::next_actor_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, i64), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::gas::charge_gas<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, i64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::self_destruct<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::host_to_wasm_trampoline::<i32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u32, u32, i64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u64, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::resolve_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::store_artifact<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, i64, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, i64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_post<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<u64, fvm::kernel::error::ExecutionError>, fvm::syscalls::gas::available<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::root<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_post<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, i64, u32, u32), core::result::Result<[u8; 32], fvm::kernel::error::ExecutionError>, fvm::syscalls::rand::get_beacon_randomness<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, i64, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::event::emit_event<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32, u32, u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_signature<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u32, u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::create_actor<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::batch_verify_seals<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::log<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::store_artifact<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::log<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_aggregate_seals<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::event::emit_event<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::tipset_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::current_balance<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u32, u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<[u8; 65], fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::recover_secp_public_key<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<fvm::syscalls::vm::Never, fvm::syscalls::error::Abort>, fvm::syscalls::vm::exit<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<[u8; 65], fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::recover_secp_public_key<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::enabled<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::set_root<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_code_cid_for_type<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, i32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32, u32, u32), core::result::Result<fvm_shared::sys::out::crypto::VerifyConsensusFault, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_consensus_fault<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::total_fil_circ_supply<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<[u8; 65], fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::recover_secp_public_key<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32, u32, u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_signature<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::log<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::batch_verify_seals<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::tipset_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u64, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::resolve_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_aggregate_seals<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_aggregate_seals<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u64, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_link<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, i64), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::gas::charge_gas<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, i64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::enabled<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u64, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_link<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<fvm_shared::sys::out::ipld::IpldStat, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_stat<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32, u32, u32), core::result::Result<fvm_shared::sys::out::crypto::VerifyConsensusFault, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_consensus_fault<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::self_destruct<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::host_to_wasm_trampoline::<u64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<i64, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_replica_update<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<[u8; 65], fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::recover_secp_public_key<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_read<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, i64), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::gas::charge_gas<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, i64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, u32, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::compute_unsealed_sector_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, i64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::lookup_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32, u32, u32), core::result::Result<fvm_shared::sys::out::crypto::VerifyConsensusFault, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_consensus_fault<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64,), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::balance_of<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<u64, fvm::kernel::error::ExecutionError>, fvm::syscalls::gas::available<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<fvm::syscalls::vm::Never, fvm::syscalls::error::Abort>, fvm::syscalls::vm::exit<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::store_artifact<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_replica_update<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::next_actor_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::out::network::NetworkContext, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::context<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u64, u32, u64, u64, u64, u64), core::result::Result<fvm_shared::sys::out::send::Send, fvm::kernel::error::ExecutionError>, fvm::syscalls::send::send<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u64, u32, u64, u64, u64, u64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_create<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<fvm_shared::sys::out::ipld::IpldStat, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_stat<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64,), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::balance_of<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::store_artifact<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<fvm_shared::sys::out::ipld::IpldOpen, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_open<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u64, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_link<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::current_balance<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u64, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_link<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u64, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::resolve_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::enabled<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, i32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_seal<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::current_balance<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<u64, fvm::kernel::error::ExecutionError>, fvm::syscalls::gas::available<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::hash<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_read<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::host_to_wasm_trampoline::<u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::current_balance<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<_, _, _, _, _, _, _>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::<_, _, _>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::host_to_wasm_trampoline::<_>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<_, _, _, _, _, _>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<_, _, _, _, _, _, _, _, _, _, _, _>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<_, _, _, _>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (_, _, _, _, _), _>>::into_func::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<_, _, _, _, _, _, _, _, _, _>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<_, _, _, _, _, _, _, _, _, _, _>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<_, _, _, _, _, _, _, _, _, _, _, _, _, _, _>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (_, _), _>>::into_func::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _), _>>::into_func::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<_, _, _, _, _, _, _, _, _, _, _>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (_, _, _, _, _, _, _, _, _, _, _, _), _>>::into_func::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<_, _, _, _, _, _, _, _, _, _, _, _, _, _, _>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (_, _, _, _, _, _, _, _, _, _, _, _, _, _), _>>::into_func::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<_, _, _, _, _>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<_, _, _, _, _, _, _, _>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<_, _, _, _, _, _, _, _, _>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<_, _, _, _, _, _, _, _, _, _, _, _, _>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<_, _, _, _, _, _, _>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (_,), _>>::into_func::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<_, _, _, _, _, _, _, _, _, _, _, _, _, _>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<_, _, _, _, _, _, _, _, _, _, _, _, _>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (_, _, _, _, _, _, _, _, _, _), _>>::into_func::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<_, _, _, _, _, _, _, _, _, _>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<_, _, _, _, _, _, _, _, _, _, _>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<_, _, _, _, _, _>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<_, _, _, _, _, _, _, _>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<_, _, _, _, _, _, _, _, _, _>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<_, _, _, _, _, _, _, _, _, _, _, _, _>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<_, _, _, _, _, _, _, _, _, _, _, _, _, _>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (_, _, _, _, _, _, _, _), _>>::into_func::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::host_to_wasm_trampoline::<_, _>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::<_, _, _>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<_, _, _, _>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<_, _, _, _, _, _>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (_, _, _, _, _, _, _), _>>::into_func::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (_, _, _, _, _, _, _, _, _), _>>::into_func::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (_, _, _), _>>::into_func::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (_, _, _, _), _>>::into_func::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<_, _, _, _, _>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<_, _, _, _, _>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<_, _, _, _, _, _, _, _, _>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::host_to_wasm_trampoline::<_, _, _, _>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::host_to_wasm_trampoline::<_, _, _>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (), _>>::into_func::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (_, _, _, _, _, _, _, _, _, _, _, _, _, _, _), _>>::into_func::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<_, _, _, _, _, _, _, _, _>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (_, _, _, _, _, _, _, _, _, _, _, _, _), _>>::into_func::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<_, _, _, _, _, _, _, _>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<_, _, _, _, _, _, _>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (_, _, _, _, _, _), _>>::into_func::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (_, _, _, _, _, _, _, _, _, _, _), _>>::into_func::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<_, _, _, _, _, _, _, _, _, _, _, _, _, _, _>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<_, _, _, _, _, _, _, _, _, _, _, _, _, _>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<_, _, _, _, _, _, _, _, _, _, _, _>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<_, _, _, _, _, _, _, _, _, _, _, _>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::host_to_wasm_trampoline::<u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::out::network::NetworkContext, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::context<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::current_balance<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::enabled<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::current_balance<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::out::network::NetworkContext, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::context<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::total_fil_circ_supply<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_seal<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<fvm::syscalls::vm::Never, fvm::syscalls::error::Abort>, fvm::syscalls::vm::exit<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::create_actor<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<u64, fvm::kernel::error::ExecutionError>, fvm::syscalls::gas::available<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<fvm_shared::sys::out::ipld::IpldOpen, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_open<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_create<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::tipset_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_post<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, i64, u32, u32), core::result::Result<[u8; 32], fvm::kernel::error::ExecutionError>, fvm::syscalls::rand::get_beacon_randomness<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, i64, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_code_cid_for_type<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, i32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::self_destruct<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32, u32, u32), core::result::Result<fvm_shared::sys::out::crypto::VerifyConsensusFault, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_consensus_fault<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u64, u32, u64, u64, u64, u64), core::result::Result<fvm_shared::sys::out::send::Send, fvm::kernel::error::ExecutionError>, fvm::syscalls::send::send<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u64, u32, u64, u64, u64, u64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<fvm::syscalls::vm::Never, fvm::syscalls::error::Abort>, fvm::syscalls::vm::exit<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::hash<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::hash<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::current_balance<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::set_root<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_replica_update<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_actor_code_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32, u32, u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_signature<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::create_actor<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::out::vm::MessageContext, fvm::kernel::error::ExecutionError>, fvm::syscalls::vm::message_context<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::next_actor_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u64, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::resolve_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::out::vm::MessageContext, fvm::kernel::error::ExecutionError>, fvm::syscalls::vm::message_context<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::log<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_read<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, i64, u32, u32), core::result::Result<[u8; 32], fvm::kernel::error::ExecutionError>, fvm::syscalls::rand::get_chain_randomness<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, i64, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, i64, u32, u32), core::result::Result<[u8; 32], fvm::kernel::error::ExecutionError>, fvm::syscalls::rand::get_chain_randomness<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, i64, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, i64), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::gas::charge_gas<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, i64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::batch_verify_seals<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, i64, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_actor_code_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::store_artifact<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::self_destruct<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, i64, u32, u32), core::result::Result<[u8; 32], fvm::kernel::error::ExecutionError>, fvm::syscalls::rand::get_beacon_randomness<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, i64, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, i64, u32, u32), core::result::Result<[u8; 32], fvm::kernel::error::ExecutionError>, fvm::syscalls::rand::get_chain_randomness<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, i64, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<fvm_shared::sys::out::ipld::IpldOpen, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_open<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::host_to_wasm_trampoline::<i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::event::emit_event<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::set_root<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_replica_update<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_create<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64,), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::balance_of<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_create<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u32, i64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u64, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_link<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_builtin_actor_type<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_post<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u32, u64, u32, u64, u64, u64, u64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::next_actor_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::log<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_create<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_actor_code_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::hash<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::enabled<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_builtin_actor_type<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, i64), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::gas::charge_gas<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, i64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<fvm_shared::sys::out::ipld::IpldOpen, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_open<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<[u8; 65], fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::recover_secp_public_key<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::out::vm::MessageContext, fvm::kernel::error::ExecutionError>, fvm::syscalls::vm::message_context<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_aggregate_seals<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, i64, u32, u32), core::result::Result<[u8; 32], fvm::kernel::error::ExecutionError>, fvm::syscalls::rand::get_chain_randomness<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, i64, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, i64, u32, u32), core::result::Result<[u8; 32], fvm::kernel::error::ExecutionError>, fvm::syscalls::rand::get_beacon_randomness<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, i64, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<u64, fvm::kernel::error::ExecutionError>, fvm::syscalls::gas::available<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u32, u32, u64, u32, u64, u64, u64, u64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::root<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u64, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::resolve_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::store_artifact<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::create_actor<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::out::network::NetworkContext, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::context<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<[u8; 65], fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::recover_secp_public_key<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u32, u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::lookup_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::create_actor<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::log<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::event::emit_event<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u32, u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_code_cid_for_type<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, i32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, u32, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::compute_unsealed_sector_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, i64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<fvm_shared::sys::out::ipld::IpldStat, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_stat<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::batch_verify_seals<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_code_cid_for_type<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, i32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<[u8; 65], fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::recover_secp_public_key<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, i64, u32, u32), core::result::Result<[u8; 32], fvm::kernel::error::ExecutionError>, fvm::syscalls::rand::get_beacon_randomness<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, i64, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<[u8; 65], fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::recover_secp_public_key<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_read<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u64, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_link<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::tipset_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32, u32, u32), core::result::Result<fvm_shared::sys::out::crypto::VerifyConsensusFault, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_consensus_fault<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_aggregate_seals<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u64, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_link<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::log<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_actor_code_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::batch_verify_seals<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_builtin_actor_type<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_replica_update<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u64, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_link<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<fvm_shared::sys::out::ipld::IpldStat, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_stat<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<fvm_shared::sys::out::ipld::IpldStat, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_stat<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, i64), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::gas::charge_gas<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, i64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32, u32, u32), core::result::Result<fvm_shared::sys::out::crypto::VerifyConsensusFault, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_consensus_fault<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::lookup_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64,), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::balance_of<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<u64, fvm::kernel::error::ExecutionError>, fvm::syscalls::gas::available<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::host_to_wasm_trampoline::<core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32, u32, u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_signature<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::current_balance<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::hash<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u64, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::resolve_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::host_to_wasm_trampoline::<i32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::event::emit_event<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::root<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<i64, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u64, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::resolve_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<u64, fvm::kernel::error::ExecutionError>, fvm::syscalls::gas::available<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::tipset_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, i64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::lookup_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_post<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::event::emit_event<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_read<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::total_fil_circ_supply<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::root<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::enabled<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32, u32, u32), core::result::Result<fvm_shared::sys::out::crypto::VerifyConsensusFault, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_consensus_fault<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u64, u32, u64, u64, u64, u64), core::result::Result<fvm_shared::sys::out::send::Send, fvm::kernel::error::ExecutionError>, fvm::syscalls::send::send<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u64, u32, u64, u64, u64, u64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::batch_verify_seals<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::enabled<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::set_root<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u64, u32, u64, u64, u64, u64), core::result::Result<fvm_shared::sys::out::send::Send, fvm::kernel::error::ExecutionError>, fvm::syscalls::send::send<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u64, u32, u64, u64, u64, u64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::tipset_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, i64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u64, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::total_fil_circ_supply<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::host_to_wasm_trampoline::<u64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<fvm_shared::sys::out::ipld::IpldStat, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_stat<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::out::network::NetworkContext, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::context<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::root<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::total_fil_circ_supply<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<fvm::syscalls::vm::Never, fvm::syscalls::error::Abort>, fvm::syscalls::vm::exit<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::set_root<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, u32, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::compute_unsealed_sector_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, i64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_aggregate_seals<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, i32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::self_destruct<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u64, u32, u64, u64, u64, u64), core::result::Result<fvm_shared::sys::out::send::Send, fvm::kernel::error::ExecutionError>, fvm::syscalls::send::send<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u64, u32, u64, u64, u64, u64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u32, u32, i64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<i64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::store_artifact<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<fvm::syscalls::vm::Never, fvm::syscalls::error::Abort>, fvm::syscalls::vm::exit<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_seal<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_seal<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, u32, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::compute_unsealed_sector_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, i64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64,), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::balance_of<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<fvm_shared::sys::out::ipld::IpldOpen, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_open<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::next_actor_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, i64), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::gas::charge_gas<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, i64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_post<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32, u32, u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_signature<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, u32, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::compute_unsealed_sector_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, i64, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::store_artifact<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_read<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_seal<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _, _, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32, u32, u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_signature<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, u32, u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::self_destruct<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_code_cid_for_type<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, i32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::lookup_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u64, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_aggregate_seals<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_replica_update<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>,), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::out::vm::MessageContext, fvm::kernel::error::ExecutionError>, fvm::syscalls::vm::message_context<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64,), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::balance_of<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}, u64, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_builtin_actor_type<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _, _), _>>::into_func::host_to_wasm_trampoline::<u32, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}
Unexecuted instantiation: <_ as wasmtime::func::IntoFunc<_, (wasmtime::func::Caller<_>, _, _, _), _>>::into_func::wasm_to_host_shim::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::next_actor_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}, u32, u32, u32, core::result::Result<u32, wasmtime::trap::Trap>>::{closure#0}::{closure#0}
1956
1957
/// Representation of a host-defined function.
1958
///
1959
/// This is used for `Func::new` but also for `Linker`-defined functions. For
1960
/// `Func::new` this is stored within a `Store`, and for `Linker`-defined
1961
/// functions they wrap this up in `Arc` to enable shared ownership of this
1962
/// across many stores.
1963
///
1964
/// Technically this structure needs a `<T>` type parameter to connect to the
1965
/// `Store<T>` itself, but that's an unsafe contract of using this for now
1966
/// rather than part of the struct type (to avoid `Func<T>` in the API).
1967
pub(crate) struct HostFunc {
1968
    // The host function context that is shared with our host-to-Wasm
1969
    // trampoline.
1970
    ctx: Box<VMHostFuncContext>,
1971
1972
    // The index for this function's signature within the engine-wide shared
1973
    // signature registry.
1974
    signature: VMSharedSignatureIndex,
1975
1976
    // Trampoline to enter this function from Rust.
1977
    host_to_wasm_trampoline: VMTrampoline,
1978
1979
    // Stored to unregister this function's signature with the engine when this
1980
    // is dropped.
1981
    engine: Engine,
1982
}
1983
1984
impl HostFunc {
1985
    /// Analog of [`Func::new`]
1986
    #[cfg(compiler)]
1987
0
    pub fn new<T>(
1988
0
        engine: &Engine,
1989
0
        ty: FuncType,
1990
0
        func: impl Fn(Caller<'_, T>, &[Val], &mut [Val]) -> Result<(), Trap> + Send + Sync + 'static,
1991
0
    ) -> Self {
1992
0
        let ty_clone = ty.clone();
1993
0
        unsafe {
1994
0
            HostFunc::new_unchecked(engine, ty, move |caller, values| {
1995
0
                Func::invoke(caller, &ty_clone, values, &func)
1996
0
            })
1997
0
        }
1998
0
    }
1999
2000
    /// Analog of [`Func::new_unchecked`]
2001
    #[cfg(compiler)]
2002
0
    pub unsafe fn new_unchecked<T>(
2003
0
        engine: &Engine,
2004
0
        ty: FuncType,
2005
0
        func: impl Fn(Caller<'_, T>, &mut [ValRaw]) -> Result<(), Trap> + Send + Sync + 'static,
2006
0
    ) -> Self {
2007
0
        let func = move |caller_vmctx, values: &mut [ValRaw]| {
2008
0
            Caller::<T>::with(caller_vmctx, |mut caller| {
2009
0
                caller.store.0.call_hook(CallHook::CallingHost)?;
2010
0
                let result = func(caller.sub_caller(), values)?;
2011
0
                caller.store.0.call_hook(CallHook::ReturningFromHost)?;
2012
0
                Ok(result)
2013
0
            })
2014
0
        };
2015
0
        let (ctx, signature, trampoline) = crate::trampoline::create_function(&ty, func, engine)
2016
0
            .expect("failed to create function");
2017
0
        HostFunc::_new(engine, ctx, signature, trampoline)
2018
0
    }
2019
2020
    /// Analog of [`Func::wrap`]
2021
996k
    pub fn wrap<T, Params, Results>(
2022
996k
        engine: &Engine,
2023
996k
        func: impl IntoFunc<T, Params, Results>,
2024
996k
    ) -> Self {
2025
996k
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
996k
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
996k
    }
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::log<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_replica_update<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
23.8k
    pub fn wrap<T, Params, Results>(
2022
23.8k
        engine: &Engine,
2023
23.8k
        func: impl IntoFunc<T, Params, Results>,
2024
23.8k
    ) -> Self {
2025
23.8k
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
23.8k
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
23.8k
    }
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::next_actor_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
23.8k
    pub fn wrap<T, Params, Results>(
2022
23.8k
        engine: &Engine,
2023
23.8k
        func: impl IntoFunc<T, Params, Results>,
2024
23.8k
    ) -> Self {
2025
23.8k
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
23.8k
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
23.8k
    }
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u64, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_create<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
23.8k
    pub fn wrap<T, Params, Results>(
2022
23.8k
        engine: &Engine,
2023
23.8k
        func: impl IntoFunc<T, Params, Results>,
2024
23.8k
    ) -> Self {
2025
23.8k
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
23.8k
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
23.8k
    }
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::total_fil_circ_supply<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
23.8k
    pub fn wrap<T, Params, Results>(
2022
23.8k
        engine: &Engine,
2023
23.8k
        func: impl IntoFunc<T, Params, Results>,
2024
23.8k
    ) -> Self {
2025
23.8k
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
23.8k
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
23.8k
    }
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_aggregate_seals<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
23.8k
    pub fn wrap<T, Params, Results>(
2022
23.8k
        engine: &Engine,
2023
23.8k
        func: impl IntoFunc<T, Params, Results>,
2024
23.8k
    ) -> Self {
2025
23.8k
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
23.8k
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
23.8k
    }
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::self_destruct<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Line
Count
Source
2021
23.8k
    pub fn wrap<T, Params, Results>(
2022
23.8k
        engine: &Engine,
2023
23.8k
        func: impl IntoFunc<T, Params, Results>,
2024
23.8k
    ) -> Self {
2025
23.8k
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
23.8k
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
23.8k
    }
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_seal<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32, u32, u32), core::result::Result<fvm_shared::sys::out::crypto::VerifyConsensusFault, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_consensus_fault<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
23.8k
    pub fn wrap<T, Params, Results>(
2022
23.8k
        engine: &Engine,
2023
23.8k
        func: impl IntoFunc<T, Params, Results>,
2024
23.8k
    ) -> Self {
2025
23.8k
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
23.8k
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
23.8k
    }
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>,), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::out::vm::MessageContext, fvm::kernel::error::ExecutionError>, fvm::syscalls::vm::message_context<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<fvm::syscalls::vm::Never, fvm::syscalls::error::Abort>, fvm::syscalls::vm::exit<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::batch_verify_seals<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, i64, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, u32, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::compute_unsealed_sector_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
23.8k
    pub fn wrap<T, Params, Results>(
2022
23.8k
        engine: &Engine,
2023
23.8k
        func: impl IntoFunc<T, Params, Results>,
2024
23.8k
    ) -> Self {
2025
23.8k
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
23.8k
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
23.8k
    }
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u64, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::create_actor<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Line
Count
Source
2021
23.8k
    pub fn wrap<T, Params, Results>(
2022
23.8k
        engine: &Engine,
2023
23.8k
        func: impl IntoFunc<T, Params, Results>,
2024
23.8k
    ) -> Self {
2025
23.8k
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
23.8k
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
23.8k
    }
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::enabled<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
23.8k
    pub fn wrap<T, Params, Results>(
2022
23.8k
        engine: &Engine,
2023
23.8k
        func: impl IntoFunc<T, Params, Results>,
2024
23.8k
    ) -> Self {
2025
23.8k
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
23.8k
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
23.8k
    }
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::out::vm::MessageContext, fvm::kernel::error::ExecutionError>, fvm::syscalls::vm::message_context<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
23.8k
    pub fn wrap<T, Params, Results>(
2022
23.8k
        engine: &Engine,
2023
23.8k
        func: impl IntoFunc<T, Params, Results>,
2024
23.8k
    ) -> Self {
2025
23.8k
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
23.8k
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
23.8k
    }
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<fvm::syscalls::vm::Never, fvm::syscalls::error::Abort>, fvm::syscalls::vm::exit<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Line
Count
Source
2021
23.8k
    pub fn wrap<T, Params, Results>(
2022
23.8k
        engine: &Engine,
2023
23.8k
        func: impl IntoFunc<T, Params, Results>,
2024
23.8k
    ) -> Self {
2025
23.8k
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
23.8k
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
23.8k
    }
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::self_destruct<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_seal<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
23.8k
    pub fn wrap<T, Params, Results>(
2022
23.8k
        engine: &Engine,
2023
23.8k
        func: impl IntoFunc<T, Params, Results>,
2024
23.8k
    ) -> Self {
2025
23.8k
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
23.8k
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
23.8k
    }
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::log<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Line
Count
Source
2021
23.8k
    pub fn wrap<T, Params, Results>(
2022
23.8k
        engine: &Engine,
2023
23.8k
        func: impl IntoFunc<T, Params, Results>,
2024
23.8k
    ) -> Self {
2025
23.8k
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
23.8k
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
23.8k
    }
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::event::emit_event<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Line
Count
Source
2021
23.8k
    pub fn wrap<T, Params, Results>(
2022
23.8k
        engine: &Engine,
2023
23.8k
        func: impl IntoFunc<T, Params, Results>,
2024
23.8k
    ) -> Self {
2025
23.8k
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
23.8k
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
23.8k
    }
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_post<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u64, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_actor_code_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
23.8k
    pub fn wrap<T, Params, Results>(
2022
23.8k
        engine: &Engine,
2023
23.8k
        func: impl IntoFunc<T, Params, Results>,
2024
23.8k
    ) -> Self {
2025
23.8k
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
23.8k
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
23.8k
    }
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, i64), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, i64), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::gas::charge_gas<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Line
Count
Source
2021
23.8k
    pub fn wrap<T, Params, Results>(
2022
23.8k
        engine: &Engine,
2023
23.8k
        func: impl IntoFunc<T, Params, Results>,
2024
23.8k
    ) -> Self {
2025
23.8k
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
23.8k
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
23.8k
    }
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>,), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::out::network::NetworkContext, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::context<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_aggregate_seals<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<fvm_shared::sys::out::ipld::IpldStat, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_stat<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
23.8k
    pub fn wrap<T, Params, Results>(
2022
23.8k
        engine: &Engine,
2023
23.8k
        func: impl IntoFunc<T, Params, Results>,
2024
23.8k
    ) -> Self {
2025
23.8k
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
23.8k
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
23.8k
    }
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::event::emit_event<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::store_artifact<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Line
Count
Source
2021
23.8k
    pub fn wrap<T, Params, Results>(
2022
23.8k
        engine: &Engine,
2023
23.8k
        func: impl IntoFunc<T, Params, Results>,
2024
23.8k
    ) -> Self {
2025
23.8k
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
23.8k
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
23.8k
    }
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u64, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::lookup_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u64), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64,), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::balance_of<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, i64), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, i64), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::gas::charge_gas<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<[u8; 65], fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::recover_secp_public_key<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
23.8k
    pub fn wrap<T, Params, Results>(
2022
23.8k
        engine: &Engine,
2023
23.8k
        func: impl IntoFunc<T, Params, Results>,
2024
23.8k
    ) -> Self {
2025
23.8k
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
23.8k
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
23.8k
    }
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, i64, i64, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, i64, u32, u32), core::result::Result<[u8; 32], fvm::kernel::error::ExecutionError>, fvm::syscalls::rand::get_chain_randomness<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
23.8k
    pub fn wrap<T, Params, Results>(
2022
23.8k
        engine: &Engine,
2023
23.8k
        func: impl IntoFunc<T, Params, Results>,
2024
23.8k
    ) -> Self {
2025
23.8k
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
23.8k
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
23.8k
    }
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u64, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::resolve_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::store_artifact<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_builtin_actor_type<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::next_actor_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>,), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::current_balance<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u64), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64,), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::balance_of<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
23.8k
    pub fn wrap<T, Params, Results>(
2022
23.8k
        engine: &Engine,
2023
23.8k
        func: impl IntoFunc<T, Params, Results>,
2024
23.8k
    ) -> Self {
2025
23.8k
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
23.8k
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
23.8k
    }
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32, u32, u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_signature<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, i64, i64, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, i64, u32, u32), core::result::Result<[u8; 32], fvm::kernel::error::ExecutionError>, fvm::syscalls::rand::get_chain_randomness<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, i64, i64, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, i64, u32, u32), core::result::Result<[u8; 32], fvm::kernel::error::ExecutionError>, fvm::syscalls::rand::get_beacon_randomness<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u64, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u64, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_link<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::root<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>,), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<u64, fvm::kernel::error::ExecutionError>, fvm::syscalls::gas::available<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u64, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::hash<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u64, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::resolve_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
23.8k
    pub fn wrap<T, Params, Results>(
2022
23.8k
        engine: &Engine,
2023
23.8k
        func: impl IntoFunc<T, Params, Results>,
2024
23.8k
    ) -> Self {
2025
23.8k
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
23.8k
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
23.8k
    }
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u64, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::lookup_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
23.8k
    pub fn wrap<T, Params, Results>(
2022
23.8k
        engine: &Engine,
2023
23.8k
        func: impl IntoFunc<T, Params, Results>,
2024
23.8k
    ) -> Self {
2025
23.8k
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
23.8k
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
23.8k
    }
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_post<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
23.8k
    pub fn wrap<T, Params, Results>(
2022
23.8k
        engine: &Engine,
2023
23.8k
        func: impl IntoFunc<T, Params, Results>,
2024
23.8k
    ) -> Self {
2025
23.8k
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
23.8k
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
23.8k
    }
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::set_root<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, i32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_code_cid_for_type<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>,), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::total_fil_circ_supply<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_read<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::out::network::NetworkContext, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::context<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
23.8k
    pub fn wrap<T, Params, Results>(
2022
23.8k
        engine: &Engine,
2023
23.8k
        func: impl IntoFunc<T, Params, Results>,
2024
23.8k
    ) -> Self {
2025
23.8k
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
23.8k
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
23.8k
    }
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::root<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
23.8k
    pub fn wrap<T, Params, Results>(
2022
23.8k
        engine: &Engine,
2023
23.8k
        func: impl IntoFunc<T, Params, Results>,
2024
23.8k
    ) -> Self {
2025
23.8k
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
23.8k
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
23.8k
    }
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, u64, u32, u64, u64, u64, u64), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u64, u32, u64, u64, u64, u64), core::result::Result<fvm_shared::sys::out::send::Send, fvm::kernel::error::ExecutionError>, fvm::syscalls::send::send<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
23.8k
    pub fn wrap<T, Params, Results>(
2022
23.8k
        engine: &Engine,
2023
23.8k
        func: impl IntoFunc<T, Params, Results>,
2024
23.8k
    ) -> Self {
2025
23.8k
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
23.8k
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
23.8k
    }
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>,), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::enabled<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, i64, i64, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, i64, u32, u32), core::result::Result<[u8; 32], fvm::kernel::error::ExecutionError>, fvm::syscalls::rand::get_beacon_randomness<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
23.8k
    pub fn wrap<T, Params, Results>(
2022
23.8k
        engine: &Engine,
2023
23.8k
        func: impl IntoFunc<T, Params, Results>,
2024
23.8k
    ) -> Self {
2025
23.8k
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
23.8k
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
23.8k
    }
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_read<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
23.8k
    pub fn wrap<T, Params, Results>(
2022
23.8k
        engine: &Engine,
2023
23.8k
        func: impl IntoFunc<T, Params, Results>,
2024
23.8k
    ) -> Self {
2025
23.8k
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
23.8k
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
23.8k
    }
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, i64, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::tipset_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
23.8k
    pub fn wrap<T, Params, Results>(
2022
23.8k
        engine: &Engine,
2023
23.8k
        func: impl IntoFunc<T, Params, Results>,
2024
23.8k
    ) -> Self {
2025
23.8k
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
23.8k
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
23.8k
    }
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, i32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_code_cid_for_type<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
23.8k
    pub fn wrap<T, Params, Results>(
2022
23.8k
        engine: &Engine,
2023
23.8k
        func: impl IntoFunc<T, Params, Results>,
2024
23.8k
    ) -> Self {
2025
23.8k
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
23.8k
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
23.8k
    }
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u64, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_actor_code_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, i64, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, u32, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::compute_unsealed_sector_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<fvm_shared::sys::out::ipld::IpldOpen, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_open<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u64, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u64, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_link<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
23.8k
    pub fn wrap<T, Params, Results>(
2022
23.8k
        engine: &Engine,
2023
23.8k
        func: impl IntoFunc<T, Params, Results>,
2024
23.8k
    ) -> Self {
2025
23.8k
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
23.8k
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
23.8k
    }
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u64, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_create<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<fvm_shared::sys::out::ipld::IpldStat, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_stat<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, i64, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::tipset_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::set_root<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Line
Count
Source
2021
23.8k
    pub fn wrap<T, Params, Results>(
2022
23.8k
        engine: &Engine,
2023
23.8k
        func: impl IntoFunc<T, Params, Results>,
2024
23.8k
    ) -> Self {
2025
23.8k
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
23.8k
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
23.8k
    }
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_replica_update<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::current_balance<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
23.8k
    pub fn wrap<T, Params, Results>(
2022
23.8k
        engine: &Engine,
2023
23.8k
        func: impl IntoFunc<T, Params, Results>,
2024
23.8k
    ) -> Self {
2025
23.8k
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
23.8k
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
23.8k
    }
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u64, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::hash<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
23.8k
    pub fn wrap<T, Params, Results>(
2022
23.8k
        engine: &Engine,
2023
23.8k
        func: impl IntoFunc<T, Params, Results>,
2024
23.8k
    ) -> Self {
2025
23.8k
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
23.8k
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
23.8k
    }
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<fvm_shared::sys::out::ipld::IpldOpen, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_open<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
23.8k
    pub fn wrap<T, Params, Results>(
2022
23.8k
        engine: &Engine,
2023
23.8k
        func: impl IntoFunc<T, Params, Results>,
2024
23.8k
    ) -> Self {
2025
23.8k
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
23.8k
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
23.8k
    }
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32, u32, u32), core::result::Result<fvm_shared::sys::out::crypto::VerifyConsensusFault, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_consensus_fault<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u64, u32, u64, u64, u64, u64), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u64, u32, u64, u64, u64, u64), core::result::Result<fvm_shared::sys::out::send::Send, fvm::kernel::error::ExecutionError>, fvm::syscalls::send::send<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<[u8; 65], fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::recover_secp_public_key<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, u32, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32, u32, u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_signature<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
23.8k
    pub fn wrap<T, Params, Results>(
2022
23.8k
        engine: &Engine,
2023
23.8k
        func: impl IntoFunc<T, Params, Results>,
2024
23.8k
    ) -> Self {
2025
23.8k
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
23.8k
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
23.8k
    }
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_builtin_actor_type<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
23.8k
    pub fn wrap<T, Params, Results>(
2022
23.8k
        engine: &Engine,
2023
23.8k
        func: impl IntoFunc<T, Params, Results>,
2024
23.8k
    ) -> Self {
2025
23.8k
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
23.8k
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
23.8k
    }
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<u64, fvm::kernel::error::ExecutionError>, fvm::syscalls::gas::available<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
23.8k
    pub fn wrap<T, Params, Results>(
2022
23.8k
        engine: &Engine,
2023
23.8k
        func: impl IntoFunc<T, Params, Results>,
2024
23.8k
    ) -> Self {
2025
23.8k
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
23.8k
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
23.8k
    }
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::batch_verify_seals<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Line
Count
Source
2021
23.8k
    pub fn wrap<T, Params, Results>(
2022
23.8k
        engine: &Engine,
2023
23.8k
        func: impl IntoFunc<T, Params, Results>,
2024
23.8k
    ) -> Self {
2025
23.8k
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
23.8k
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
23.8k
    }
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u64, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::create_actor<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<_, _, _, _>
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u64, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_actor_code_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
417
    pub fn wrap<T, Params, Results>(
2022
417
        engine: &Engine,
2023
417
        func: impl IntoFunc<T, Params, Results>,
2024
417
    ) -> Self {
2025
417
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
417
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
417
    }
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_replica_update<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
417
    pub fn wrap<T, Params, Results>(
2022
417
        engine: &Engine,
2023
417
        func: impl IntoFunc<T, Params, Results>,
2024
417
    ) -> Self {
2025
417
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
417
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
417
    }
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::next_actor_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
417
    pub fn wrap<T, Params, Results>(
2022
417
        engine: &Engine,
2023
417
        func: impl IntoFunc<T, Params, Results>,
2024
417
    ) -> Self {
2025
417
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
417
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
417
    }
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>,), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::out::network::NetworkContext, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::context<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<fvm_shared::sys::out::ipld::IpldStat, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_stat<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
417
    pub fn wrap<T, Params, Results>(
2022
417
        engine: &Engine,
2023
417
        func: impl IntoFunc<T, Params, Results>,
2024
417
    ) -> Self {
2025
417
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
417
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
417
    }
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::enabled<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
417
    pub fn wrap<T, Params, Results>(
2022
417
        engine: &Engine,
2023
417
        func: impl IntoFunc<T, Params, Results>,
2024
417
    ) -> Self {
2025
417
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
417
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
417
    }
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::out::vm::MessageContext, fvm::kernel::error::ExecutionError>, fvm::syscalls::vm::message_context<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
417
    pub fn wrap<T, Params, Results>(
2022
417
        engine: &Engine,
2023
417
        func: impl IntoFunc<T, Params, Results>,
2024
417
    ) -> Self {
2025
417
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
417
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
417
    }
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u64), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64,), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::balance_of<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, i64), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, i64), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::gas::charge_gas<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::self_destruct<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_seal<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
417
    pub fn wrap<T, Params, Results>(
2022
417
        engine: &Engine,
2023
417
        func: impl IntoFunc<T, Params, Results>,
2024
417
    ) -> Self {
2025
417
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
417
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
417
    }
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::log<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Line
Count
Source
2021
417
    pub fn wrap<T, Params, Results>(
2022
417
        engine: &Engine,
2023
417
        func: impl IntoFunc<T, Params, Results>,
2024
417
    ) -> Self {
2025
417
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
417
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
417
    }
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<[u8; 65], fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::recover_secp_public_key<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
417
    pub fn wrap<T, Params, Results>(
2022
417
        engine: &Engine,
2023
417
        func: impl IntoFunc<T, Params, Results>,
2024
417
    ) -> Self {
2025
417
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
417
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
417
    }
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, i64, i64, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, i64, u32, u32), core::result::Result<[u8; 32], fvm::kernel::error::ExecutionError>, fvm::syscalls::rand::get_chain_randomness<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
417
    pub fn wrap<T, Params, Results>(
2022
417
        engine: &Engine,
2023
417
        func: impl IntoFunc<T, Params, Results>,
2024
417
    ) -> Self {
2025
417
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
417
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
417
    }
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::store_artifact<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_post<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_builtin_actor_type<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::next_actor_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>,), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::current_balance<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u64), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64,), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::balance_of<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
417
    pub fn wrap<T, Params, Results>(
2022
417
        engine: &Engine,
2023
417
        func: impl IntoFunc<T, Params, Results>,
2024
417
    ) -> Self {
2025
417
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
417
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
417
    }
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, i64), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, i64), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::gas::charge_gas<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Line
Count
Source
2021
417
    pub fn wrap<T, Params, Results>(
2022
417
        engine: &Engine,
2023
417
        func: impl IntoFunc<T, Params, Results>,
2024
417
    ) -> Self {
2025
417
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
417
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
417
    }
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, i64, i64, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, i64, u32, u32), core::result::Result<[u8; 32], fvm::kernel::error::ExecutionError>, fvm::syscalls::rand::get_beacon_randomness<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u64, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u64, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_link<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_aggregate_seals<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::root<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>,), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<u64, fvm::kernel::error::ExecutionError>, fvm::syscalls::gas::available<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::event::emit_event<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_post<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
417
    pub fn wrap<T, Params, Results>(
2022
417
        engine: &Engine,
2023
417
        func: impl IntoFunc<T, Params, Results>,
2024
417
    ) -> Self {
2025
417
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
417
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
417
    }
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::set_root<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::store_artifact<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Line
Count
Source
2021
417
    pub fn wrap<T, Params, Results>(
2022
417
        engine: &Engine,
2023
417
        func: impl IntoFunc<T, Params, Results>,
2024
417
    ) -> Self {
2025
417
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
417
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
417
    }
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u64, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::lookup_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>,), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::total_fil_circ_supply<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::out::network::NetworkContext, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::context<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
417
    pub fn wrap<T, Params, Results>(
2022
417
        engine: &Engine,
2023
417
        func: impl IntoFunc<T, Params, Results>,
2024
417
    ) -> Self {
2025
417
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
417
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
417
    }
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, u64, u32, u64, u64, u64, u64), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u64, u32, u64, u64, u64, u64), core::result::Result<fvm_shared::sys::out::send::Send, fvm::kernel::error::ExecutionError>, fvm::syscalls::send::send<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
417
    pub fn wrap<T, Params, Results>(
2022
417
        engine: &Engine,
2023
417
        func: impl IntoFunc<T, Params, Results>,
2024
417
    ) -> Self {
2025
417
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
417
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
417
    }
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u64, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::resolve_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>,), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::enabled<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32, u32, u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_signature<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, i64, i64, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, i64, u32, u32), core::result::Result<[u8; 32], fvm::kernel::error::ExecutionError>, fvm::syscalls::rand::get_chain_randomness<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, i64, i64, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, i64, u32, u32), core::result::Result<[u8; 32], fvm::kernel::error::ExecutionError>, fvm::syscalls::rand::get_beacon_randomness<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
417
    pub fn wrap<T, Params, Results>(
2022
417
        engine: &Engine,
2023
417
        func: impl IntoFunc<T, Params, Results>,
2024
417
    ) -> Self {
2025
417
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
417
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
417
    }
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_read<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
417
    pub fn wrap<T, Params, Results>(
2022
417
        engine: &Engine,
2023
417
        func: impl IntoFunc<T, Params, Results>,
2024
417
    ) -> Self {
2025
417
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
417
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
417
    }
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, i32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_code_cid_for_type<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
417
    pub fn wrap<T, Params, Results>(
2022
417
        engine: &Engine,
2023
417
        func: impl IntoFunc<T, Params, Results>,
2024
417
    ) -> Self {
2025
417
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
417
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
417
    }
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u64, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::hash<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, i64, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, u32, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::compute_unsealed_sector_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u64, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::resolve_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
417
    pub fn wrap<T, Params, Results>(
2022
417
        engine: &Engine,
2023
417
        func: impl IntoFunc<T, Params, Results>,
2024
417
    ) -> Self {
2025
417
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
417
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
417
    }
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u64, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::lookup_address<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
417
    pub fn wrap<T, Params, Results>(
2022
417
        engine: &Engine,
2023
417
        func: impl IntoFunc<T, Params, Results>,
2024
417
    ) -> Self {
2025
417
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
417
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
417
    }
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u64, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u64, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_link<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
417
    pub fn wrap<T, Params, Results>(
2022
417
        engine: &Engine,
2023
417
        func: impl IntoFunc<T, Params, Results>,
2024
417
    ) -> Self {
2025
417
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
417
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
417
    }
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<fvm_shared::sys::out::ipld::IpldStat, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_stat<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, i64, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::tipset_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<fvm::syscalls::vm::Never, fvm::syscalls::error::Abort>, fvm::syscalls::vm::exit<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, i32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_code_cid_for_type<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_replica_update<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::current_balance<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
417
    pub fn wrap<T, Params, Results>(
2022
417
        engine: &Engine,
2023
417
        func: impl IntoFunc<T, Params, Results>,
2024
417
    ) -> Self {
2025
417
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
417
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
417
    }
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<fvm::syscalls::vm::Never, fvm::syscalls::error::Abort>, fvm::syscalls::vm::exit<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Line
Count
Source
2021
417
    pub fn wrap<T, Params, Results>(
2022
417
        engine: &Engine,
2023
417
        func: impl IntoFunc<T, Params, Results>,
2024
417
    ) -> Self {
2025
417
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
417
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
417
    }
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u64, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::hash<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
417
    pub fn wrap<T, Params, Results>(
2022
417
        engine: &Engine,
2023
417
        func: impl IntoFunc<T, Params, Results>,
2024
417
    ) -> Self {
2025
417
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
417
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
417
    }
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<fvm_shared::sys::out::ipld::IpldOpen, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_open<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
417
    pub fn wrap<T, Params, Results>(
2022
417
        engine: &Engine,
2023
417
        func: impl IntoFunc<T, Params, Results>,
2024
417
    ) -> Self {
2025
417
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
417
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
417
    }
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u64, u32, u64, u64, u64, u64), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u64, u32, u64, u64, u64, u64), core::result::Result<fvm_shared::sys::out::send::Send, fvm::kernel::error::ExecutionError>, fvm::syscalls::send::send<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<[u8; 65], fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::recover_secp_public_key<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_read<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, u32, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32, u32, u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_signature<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
417
    pub fn wrap<T, Params, Results>(
2022
417
        engine: &Engine,
2023
417
        func: impl IntoFunc<T, Params, Results>,
2024
417
    ) -> Self {
2025
417
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
417
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
417
    }
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::root<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
417
    pub fn wrap<T, Params, Results>(
2022
417
        engine: &Engine,
2023
417
        func: impl IntoFunc<T, Params, Results>,
2024
417
    ) -> Self {
2025
417
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
417
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
417
    }
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::batch_verify_seals<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Line
Count
Source
2021
417
    pub fn wrap<T, Params, Results>(
2022
417
        engine: &Engine,
2023
417
        func: impl IntoFunc<T, Params, Results>,
2024
417
    ) -> Self {
2025
417
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
417
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
417
    }
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u64, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::create_actor<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::debug::log<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u64, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_create<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
417
    pub fn wrap<T, Params, Results>(
2022
417
        engine: &Engine,
2023
417
        func: impl IntoFunc<T, Params, Results>,
2024
417
    ) -> Self {
2025
417
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
417
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
417
    }
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, i64, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::tipset_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
417
    pub fn wrap<T, Params, Results>(
2022
417
        engine: &Engine,
2023
417
        func: impl IntoFunc<T, Params, Results>,
2024
417
    ) -> Self {
2025
417
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
417
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
417
    }
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u64, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_actor_code_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::TokenAmount, fvm::kernel::error::ExecutionError>, fvm::syscalls::network::total_fil_circ_supply<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
417
    pub fn wrap<T, Params, Results>(
2022
417
        engine: &Engine,
2023
417
        func: impl IntoFunc<T, Params, Results>,
2024
417
    ) -> Self {
2025
417
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
417
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
417
    }
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_aggregate_seals<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
417
    pub fn wrap<T, Params, Results>(
2022
417
        engine: &Engine,
2023
417
        func: impl IntoFunc<T, Params, Results>,
2024
417
    ) -> Self {
2025
417
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
417
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
417
    }
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<fvm_shared::sys::out::ipld::IpldOpen, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_open<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::self_destruct<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Line
Count
Source
2021
417
    pub fn wrap<T, Params, Results>(
2022
417
        engine: &Engine,
2023
417
        func: impl IntoFunc<T, Params, Results>,
2024
417
    ) -> Self {
2025
417
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
417
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
417
    }
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_seal<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u64, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::ipld::block_create<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32, u32, u32), core::result::Result<fvm_shared::sys::out::crypto::VerifyConsensusFault, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_consensus_fault<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
417
    pub fn wrap<T, Params, Results>(
2022
417
        engine: &Engine,
2023
417
        func: impl IntoFunc<T, Params, Results>,
2024
417
    ) -> Self {
2025
417
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
417
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
417
    }
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>,), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<fvm_shared::sys::out::vm::MessageContext, fvm::kernel::error::ExecutionError>, fvm::syscalls::vm::message_context<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::sself::set_root<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Line
Count
Source
2021
417
    pub fn wrap<T, Params, Results>(
2022
417
        engine: &Engine,
2023
417
        func: impl IntoFunc<T, Params, Results>,
2024
417
    ) -> Self {
2025
417
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
417
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
417
    }
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::batch_verify_seals<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, i64, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(i64, u32, u32, u32, u32), core::result::Result<u32, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::compute_unsealed_sector_cid<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
417
    pub fn wrap<T, Params, Results>(
2022
417
        engine: &Engine,
2023
417
        func: impl IntoFunc<T, Params, Results>,
2024
417
    ) -> Self {
2025
417
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
417
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
417
    }
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u64, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u64, u32, u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::create_actor<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Line
Count
Source
2021
417
    pub fn wrap<T, Params, Results>(
2022
417
        engine: &Engine,
2023
417
        func: impl IntoFunc<T, Params, Results>,
2024
417
    ) -> Self {
2025
417
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
417
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
417
    }
Unexecuted instantiation: <wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32, u32, u32, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32, u32, u32, u32, u32), core::result::Result<fvm_shared::sys::out::crypto::VerifyConsensusFault, fvm::kernel::error::ExecutionError>, fvm::syscalls::crypto::verify_consensus_fault<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32,), core::result::Result<i32, fvm::kernel::error::ExecutionError>, fvm::syscalls::actor::get_builtin_actor_type<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
417
    pub fn wrap<T, Params, Results>(
2022
417
        engine: &Engine,
2023
417
        func: impl IntoFunc<T, Params, Results>,
2024
417
    ) -> Self {
2025
417
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
417
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
417
    }
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(), core::result::Result<u64, fvm::kernel::error::ExecutionError>, fvm::syscalls::gas::available<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#1}>
Line
Count
Source
2021
417
    pub fn wrap<T, Params, Results>(
2022
417
        engine: &Engine,
2023
417
        func: impl IntoFunc<T, Params, Results>,
2024
417
    ) -> Self {
2025
417
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
417
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
417
    }
<wasmtime::func::HostFunc>::wrap::<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>, (wasmtime::func::Caller<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>, u32, u32), core::result::Result<u32, wasmtime::trap::Trap>, <wasmtime::linker::Linker<fvm::syscalls::InvocationData<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>> as fvm::syscalls::bind::BindSyscall<(u32, u32), core::result::Result<(), fvm::kernel::error::ExecutionError>, fvm::syscalls::event::emit_event<fvm::kernel::default::DefaultKernel<fvm::call_manager::default::DefaultCallManager<fvm::machine::default::DefaultMachine<fvm_ipld_blockstore::memory::MemoryBlockstore, fvm_integration_tests::dummy::DummyExterns>>>>>>::bind::{closure#0}>
Line
Count
Source
2021
417
    pub fn wrap<T, Params, Results>(
2022
417
        engine: &Engine,
2023
417
        func: impl IntoFunc<T, Params, Results>,
2024
417
    ) -> Self {
2025
417
        let (ctx, signature, trampoline) = func.into_func(engine);
2026
417
        HostFunc::_new(engine, ctx, signature, trampoline)
2027
417
    }
2028
2029
    /// Requires that this function's signature is already registered within
2030
    /// `Engine`. This happens automatically during the above two constructors.
2031
996k
    fn _new(
2032
996k
        engine: &Engine,
2033
996k
        ctx: Box<VMHostFuncContext>,
2034
996k
        signature: VMSharedSignatureIndex,
2035
996k
        trampoline: VMTrampoline,
2036
996k
    ) -> Self {
2037
996k
        HostFunc {
2038
996k
            ctx,
2039
996k
            signature,
2040
996k
            host_to_wasm_trampoline: trampoline,
2041
996k
            engine: engine.clone(),
2042
996k
        }
2043
996k
    }
2044
2045
    /// Inserts this `HostFunc` into a `Store`, returning the `Func` pointing to
2046
    /// it.
2047
    ///
2048
    /// # Unsafety
2049
    ///
2050
    /// Can only be inserted into stores with a matching `T` relative to when
2051
    /// this `HostFunc` was first created.
2052
0
    pub unsafe fn to_func(self: &Arc<Self>, store: &mut StoreOpaque) -> Func {
2053
0
        self.validate_store(store);
2054
0
        let me = self.clone();
2055
0
        Func::from_func_kind(FuncKind::SharedHost(me), store)
2056
0
    }
2057
2058
    /// Inserts this `HostFunc` into a `Store`, returning the `Func` pointing to
2059
    /// it.
2060
    ///
2061
    /// This function is similar to, but not equivalent, to `HostFunc::to_func`.
2062
    /// Notably this function requires that the `Arc<Self>` pointer is otherwise
2063
    /// rooted within the `StoreOpaque` via another means. When in doubt use
2064
    /// `to_func` above as it's safer.
2065
    ///
2066
    /// # Unsafety
2067
    ///
2068
    /// Can only be inserted into stores with a matching `T` relative to when
2069
    /// this `HostFunc` was first created.
2070
    ///
2071
    /// Additionally the `&Arc<Self>` is not cloned in this function. Instead a
2072
    /// raw pointer to `Self` is stored within the `Store` for this function.
2073
    /// The caller must arrange for the `Arc<Self>` to be "rooted" in the store
2074
    /// provided via another means, probably by pushing to
2075
    /// `StoreOpaque::rooted_host_funcs`.
2076
196k
    pub unsafe fn to_func_store_rooted(self: &Arc<Self>, store: &mut StoreOpaque) -> Func {
2077
196k
        self.validate_store(store);
2078
196k
        Func::from_func_kind(FuncKind::RootedHost(RootedHostFunc::new(self)), store)
2079
196k
    }
2080
2081
    /// Same as [`HostFunc::to_func`], different ownership.
2082
0
    unsafe fn into_func(self, store: &mut StoreOpaque) -> Func {
2083
0
        self.validate_store(store);
2084
0
        Func::from_func_kind(FuncKind::Host(Box::new(self)), store)
2085
0
    }
2086
2087
196k
    fn validate_store(&self, store: &mut StoreOpaque) {
2088
196k
        // This assert is required to ensure that we can indeed safely insert
2089
196k
        // `self` into the `store` provided, otherwise the type information we
2090
196k
        // have listed won't be correct. This is possible to hit with the public
2091
196k
        // API of Wasmtime, and should be documented in relevant functions.
2092
196k
        assert!(
2093
196k
            Engine::same(&self.engine, store.engine()),
2094
0
            "cannot use a store with a different engine than a linker was created with",
2095
        );
2096
196k
    }
2097
2098
196k
    pub(crate) fn sig_index(&self) -> VMSharedSignatureIndex {
2099
196k
        self.signature
2100
196k
    }
2101
2102
196k
    fn export_func(&self) -> ExportFunction {
2103
196k
        ExportFunction {
2104
196k
            anyfunc: self.ctx.wasm_to_host_trampoline(),
2105
196k
        }
2106
196k
    }
2107
}
2108
2109
impl Drop for HostFunc {
2110
996k
    fn drop(&mut self) {
2111
996k
        unsafe {
2112
996k
            self.engine.signatures().unregister(self.signature);
2113
996k
        }
2114
996k
    }
2115
}
2116
2117
impl FuncData {
2118
    #[inline]
2119
0
    pub(crate) fn trampoline(&self) -> VMTrampoline {
2120
0
        match &self.kind {
2121
0
            FuncKind::StoreOwned { trampoline, .. } => *trampoline,
2122
0
            FuncKind::SharedHost(host) => host.host_to_wasm_trampoline,
2123
0
            FuncKind::RootedHost(host) => host.host_to_wasm_trampoline,
2124
0
            FuncKind::Host(host) => host.host_to_wasm_trampoline,
2125
        }
2126
0
    }
2127
2128
    #[inline]
2129
244k
    fn export(&self) -> ExportFunction {
2130
244k
        self.kind.export()
2131
244k
    }
2132
2133
24.2k
    pub(crate) fn sig_index(&self) -> VMSharedSignatureIndex {
2134
24.2k
        unsafe { self.export().anyfunc.as_ref().type_index }
2135
24.2k
    }
2136
}
2137
2138
impl FuncKind {
2139
    #[inline]
2140
244k
    fn export(&self) -> ExportFunction {
2141
244k
        match self {
2142
48.5k
            FuncKind::StoreOwned { export, .. } => *export,
2143
0
            FuncKind::SharedHost(host) => host.export_func(),
2144
196k
            FuncKind::RootedHost(host) => host.export_func(),
2145
0
            FuncKind::Host(host) => host.export_func(),
2146
        }
2147
244k
    }
2148
}
2149
2150
use self::rooted::*;
2151
2152
/// An inner module is used here to force unsafe construction of
2153
/// `RootedHostFunc` instead of accidentally safely allowing access to its
2154
/// constructor.
2155
mod rooted {
2156
    use super::HostFunc;
2157
    use std::ops::Deref;
2158
    use std::ptr::NonNull;
2159
    use std::sync::Arc;
2160
2161
    /// A variant of a pointer-to-a-host-function used in `FuncKind::RootedHost`
2162
    /// above.
2163
    ///
2164
    /// For more documentation see `FuncKind::RootedHost`, `InstancePre`, and
2165
    /// `HostFunc::to_func_store_rooted`.
2166
    pub(crate) struct RootedHostFunc(NonNull<HostFunc>);
2167
2168
    // These are required due to the usage of `NonNull` but should be safe
2169
    // because `HostFunc` is itself send/sync.
2170
    unsafe impl Send for RootedHostFunc where HostFunc: Send {}
2171
    unsafe impl Sync for RootedHostFunc where HostFunc: Sync {}
2172
2173
    impl RootedHostFunc {
2174
        /// Note that this is `unsafe` because this wrapper type allows safe
2175
        /// access to the pointer given at any time, including outside the
2176
        /// window of validity of `func`, so callers must not use the return
2177
        /// value past the lifetime of the provided `func`.
2178
196k
        pub(crate) unsafe fn new(func: &Arc<HostFunc>) -> RootedHostFunc {
2179
196k
            RootedHostFunc(NonNull::from(&**func))
2180
196k
        }
2181
    }
2182
2183
    impl Deref for RootedHostFunc {
2184
        type Target = HostFunc;
2185
2186
196k
        fn deref(&self) -> &HostFunc {
2187
196k
            unsafe { self.0.as_ref() }
2188
196k
        }
2189
    }
2190
}